UVa 140 Bandwidth
来源:互联网 发布:家用ktv点歌软件 编辑:程序博客网 时间:2024/06/05 21:01
求全排列,这些排列中,有关系的元素下表差的最大值 中间的最小值
然而并没有用剪枝。。
#include <cstdio>#include <cstring>#include <iostream>#include <vector>#include <cmath>#include <set>#include <algorithm>using namespace std;#define inf 0x3f3f3f3fset<int> c[27];bool vis[27],flag[27];int num = 0;int ans = inf,aans[10];int dfs(int n,int a[10]){ if(n == num) { int nmax = 0; for(int i = 0; i < num; i++) { for(auto it : c[a[i]]) for(int j = 0; j < num; j++) if(a[j] == it) nmax = max(nmax,abs(i-j)); } if(ans > nmax) { ans = nmax; for(int i = 0; i < n ; i++) aans[i] = a[i]; } return 0; } else { for(int i = 0; i < 26; i++) { if(vis[i] && !flag[i]) { a[n] = i; flag[i] = 1; dfs(n+1,a); flag[i] = 0; } } }}int main(){ char s[150]; while(cin.getline(s,150) && s[0] != '#') { memset(vis,0,sizeof(vis)); for(int i = 0; i < 26; i++) c[i].clear(); ans = inf; int slen = strlen(s); num = 0; for(int i = 0; i < slen; i++) { if(s[i] == ';') continue; else if(s[i] != ':' && s[i] != ';') { vis[s[i]-'A'] = 1; int j; for(j = i+2; ; j++) { if(s[j] == ';' || s[j] == '\0')break; c[s[i] - 'A'].insert(s[j]-'A'); c[s[j] - 'A'].insert(s[i]-'A'); vis[s[j]-'A'] = 1; } i = j; } } for(int i = 0; i < 26; i++) if(vis[i]) num++; int a[10] = {0}; for(int i = 0; i < 26; i++) { if(vis[i]) { flag[i] = 1; a[0] = i; dfs(1,a); flag[i] = 0; } } for(int i = 0; i < num; i++) printf("%c ",aans[i]+'A'); printf("-> "); printf("%d\n",ans); } return 0;}
还是觉得自己的代码写的不好看,和真的太差了。
0 0
- UVa 140 - Bandwidth
- uva 140 - Bandwidth
- UVa 140 - Bandwidth
- uva 140 - Bandwidth
- UVa 140 - Bandwidth
- UVA 140 - Bandwidth
- UVa 140 - Bandwidth
- UVA 140 Bandwidth
- uva 140 Bandwidth
- uva 140 Bandwidth
- UVa:140 Bandwidth
- UVa 140 - Bandwidth
- uva 140 - Bandwidth
- UVa 140 Bandwidth
- UVa 140 - Bandwidth
- uva 140 Bandwidth 带宽
- UVA - 140 Bandwidth
- UVA - 140 Bandwidth
- mac中编译Gogui围棋程序
- 剑指offer-反转链表
- Java之反射
- 【九度OJ】题目1174:查找第K小数 解题报告
- 深入理解Python中协程的应用机制: 使用纯Python来实现一个操作系统吧!!
- UVa 140 Bandwidth
- PHP网站开发实例教程-知识点归纳1
- c++ 用参数初始化列表对数据成员初始化
- BZOJ 1444 [Jsoi2009] 有趣的游戏
- C#119课的主要内容
- JAVAEE学习之JDBC
- 技术积累
- 数据结构之选择排序
- DOM解析与SAX解析对比