Uva 140 - Bandwidth
给你一个以邻接表展现的图的节点以及其相邻的节点,这时你将所有出现过的节点随机排列,找出此排序中相邻节点之间距离最长的值代表此排列的值,而这只是其中一种排列,你要找出所有排列中这种代表的值得最小值,并将有最小值的串的排列情况输出
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=76
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<cmath> 5 #define VALUE 12 6 #define INF 1000000 7 using namespace std; 8 int graph[VALUE][VALUE]; //邻接表存储图 9 char input[VALUE*VALUE+10]; //输入 10 int list[27], store[27]; //list存储所有的节点,store存储当前有最小值的排列 11 int main() 12 { 13 #ifndef ONLINE_JUDGE 14 freopen("input.txt", "r", stdin); 15 #endif 16 int i, j, t, len, temp, start, point, cnt; 17 int _max, _min; 18 while(scanf("%s", input) != EOF) 19 { 20 if(strcmp(input, "#") == 0) break; 21 memset(list, 0, sizeof(list)); 22 memset(graph, 0, sizeof(graph)); 23 len = strlen(input); 24 cnt = 0; 25 for(i=0; i<len; ++i) 26 {//处理输入,所有的字符都转换成整型 27 start = input[i] - 'A'; 28 for(t=0; t<cnt && list[t] != start; ++t); 29 if(t >= cnt) list[cnt++] = start; 30 for(i=i+2; input[i] != ';' && i<len; ++i) 31 { 32 point = input[i] - 'A'; 33 for(t=0; t<cnt && list[t] != point; ++t); 34 if(t >= cnt) list[cnt++] = point; 35 graph[start][++graph[start][0]] = point; 36 } 37 } 38 sort(list, list+cnt); 39 _min = INF; 40 do 41 {//每次循环list为不同的排列 42 _max = -INF; 43 for(i=0; i<cnt; ++i) 44 { 45 temp = list[i]; 46 for(j=1; j<=graph[temp][0]; ++j) 47 { 48 for(t=0; t<cnt && list[t] != graph[temp][j]; ++t); 49 point = (int)fabs(i-t); 50 if(_max < point) _max = point; 51 } 52 } 53 if(_min > _max) 54 { 55 _min = _max; 56 memcpy(store, list, sizeof(int)*cnt); 57 } 58 59 }while(next_permutation(list, list+cnt)); 60 for(i=0; i<cnt; ++i) 61 printf("%c ", store[i]+'A'); 62 printf("-> %d\n", _min); 63 } 64 return 0; 65 }

更多内容请关注个人微信公众号 物役记 (微信号:materialchains)
作者:雪影蓝枫
本文版权归作者和博客园共有,欢迎转载,未经作者同意须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?