uva140Bandwidth带宽——字符串处理加全排列
来源:互联网 发布:php list注意 编辑:程序博客网 时间:2024/06/10 04:39
/*带宽
题意:给出一串字符串,字符串中包括形如 A:FB;B:GC;D:GC;F:AGH;E:HD
A:FB;表示点A与F相连,A与B相连
如果将这个字符串的顶点排序为 A B C F G D H E
A与B之间边长为1;
A与C不相连;
A与F之间的边长为3;
A与剩下的不相连;
以此类推B也是如此;
在不同的顶点排列中,相连两点的边长随位置变化而变化
找出同一个顶点序列中最长的边长作为有效边长,
再找出所有顶点序列中有效边长最小的序列,并按题目所给格式输出
题解: 用邻接矩阵存储各个顶点是否相连;
再用字符串保存出现过的顶点;全排列字符串找出答案
*/
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;char str[500];int book[100];int mp[100][100];int num[100];int chr[100];int main(){ while(scanf("%s",str)) { if(strcmp(str,"#") == 0) break; memset(book,0,sizeof(book)); memset(mp,0,sizeof(mp)); memset(chr,0,sizeof(chr));// 找出并存储邻接矩阵 int flag = 0; int ans; for(int i=0; i<strlen(str); i++) { if(flag == 0 && str[i] >= 'A' && str[i] <= 'Z') ans = str[i] - 'A' + 1; else if(flag == 1 && str[i] >= 'A' && str[i] <= 'Z') mp[ans][str[i]-'A'+1] = mp[str[i]-'A'+1][ans] = abs(ans-(str[i]-'A'+1)); else if(str[i] == ':') flag = 1; else if(str[i] == ';') flag = 0; }// 用字符串存储顶点 int coun = 0; for(int i=0; i<strlen(str); i++) if(book[str[i] - 'A' +1] == 0 && str[i] >= 'A' && str[i] <= 'Z' ) { book[str[i] - 'A' +1] = 1; chr[coun++] = str[i] -'A'+1; } sort(chr,chr+coun);// 全排列 int minn = 0x3f3f3f; int maxn; do { maxn = 0; for(int i=0; i<coun; i++) { for(int j=i+1; j<coun; j++) { if(mp[chr[i]][chr[j]]) { maxn = max(maxn,abs(i-j)); } } } if(minn > maxn) { minn = maxn; for(int i=0; i<coun; i++) num[i] = chr[i]; } }while(next_permutation(chr,chr+coun)); for(int i=0; i<coun; i++) printf("%c ",num[i]-1+'A'); printf("-> %d\n",minn); }}
阅读全文
0 0
- uva140Bandwidth带宽——字符串处理加全排列
- 字符串处理------全排列
- 字符串处理---全排列
- hdu 1583 字符串合并加全排列
- UVA140Bandwidth
- 递归应用——字符串全排列,字符串组合
- 字符串算法——数组或字符串全排列(Permutations)
- 数组全排列算法(一)字符串数组全排列——逐个追加组合算法
- 字符串全排列——重复和非重复
- 字符串的全排列——按字典顺序
- 字符串数组的全排列——数组
- 面试题_28——字符串的全排列
- 回溯法——字符串的全排列
- LeetCode—**字符串中数字的全排列问题Permutations
- 全排列—递归
- 字符串的全排列
- 字符串的全排列
- 字符串全排列问题
- CSS样式之overflow属性
- 问题:Tomcat环境配置好后,在命令行内运行 startup 显示 不是内部命令
- Tim
- Windows套接字I/O模型(5) -- 完成端口模型
- 浅谈欧拉函数
- uva140Bandwidth带宽——字符串处理加全排列
- 电工必看:如何快速画出具有专业水准的电气布置图!
- Sigmetrix Cetol 6σ v9.1.1 for PTC Creo 2.0-4.0 Win64 1CD
- Android 项目开发必备-Utils类的建立与使用
- 基于ajaxFileUpload,兼容ie7以上、chrome等浏览器的文件上传功能
- API3
- 欢迎使用CSDN-markdown编辑器
- dobbo配置
- 2048游戏(java控制台-原生jdk实现)