UVa140 Bandwidth

简介: UVa140 Bandwidth
#include <stdio.h>#include <string.h>#include <ctype.h>#include <stdlib.h>#define MAXN 30#define BUFLEN 80#define STRLEN 30intgraph[MAXN][MAXN];
inthasChar[STRLEN];
intChar[STRLEN];
intlen;
intvis[STRLEN];
intmax;
intresult[STRLEN];
intans[STRLEN];
intcmp_char(constvoid*a, constvoid*b);
voiddfs(intcur);
intmain()
{
inti;
charbuf[BUFLEN];
intstart, end;
#ifndef ONLINE_JUDGEfreopen("d:\\uva_in.txt", "r", stdin);
#endifwhile (scanf("%s", buf) &&buf[0] !='#') {
memset(hasChar, -1, sizeof(hasChar));
memset(graph, 0, sizeof(graph));
memset(vis, 0, sizeof(vis));
max=100;
i=0;
len=0;
while (i<strlen(buf)) {
start=buf[i] -'A';
if (hasChar[start] ==-1) {
hasChar[start] =1;
Char[len++] =start;
            }
i+=2;
while (isalpha(buf[i])) {
end=buf[i] -'A';
if (hasChar[end] ==-1) {
hasChar[end] =1;
Char[len++] =end;
                }
graph[start][end] =graph[end][start] =1;
i++;
            }
i++;
        }
qsort(Char, len, sizeof(int), cmp_char);
dfs(0);
for (i=0; i<len; i++) {
printf("%c ", ans[i] +'A');
        }
printf("-> %d\n", max);
    }
return0;
}
intcmp_char(constvoid*a, constvoid*b)
{
constint*tmp_a= (constint*)a;
constint*tmp_b= (constint*)b;
return*tmp_a-*tmp_b;
}
voiddfs(intcur)
{
inti, j;
inttemp;
if (cur==len) {
temp=0;
for (i=0; i<cur-1; i++) {
for (j=i+1; j<cur; j++) {
if (graph[result[i]][result[j]] && (j-i) >temp)
temp=j-i;
            }
        }
if (temp<max) {
max=temp;
memcpy(ans, result, sizeof(result));
        }
    } else {
for (i=0; i<len; i++) {
if (!vis[i]) {
vis[i] =1;
result[cur] =Char[i];
dfs(cur+1);
vis[i] =0;
            }
        }
    }
}
目录
相关文章
|
机器学习/深度学习 并行计算 图形学
CPU、GPU、TPU、NPU等到底是什么?
CPU、GPU、TPU、NPU等到底是什么?
3395 3
|
11月前
|
人工智能 自然语言处理 机器人
OpenAI推出具有图像上传和分析功能的完整o1模型,并首次推出ChatGPT Pro
OpenAI推出具有图像上传和分析功能的完整o1模型,并首次推出ChatGPT Pro
|
PyTorch 算法框架/工具
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
本文介绍了PyTorch中的BatchNorm2d模块,它用于卷积层后的数据归一化处理,以稳定网络性能,并讨论了其参数如num_features、eps和momentum,以及affine参数对权重和偏置的影响。
1574 0
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
|
8月前
|
人工智能 算法 数据可视化
分享5款好用有趣的小软件
本文分享5款宝藏级软件:学术笔记工具Zettlr,支持Markdown与LaTeX排版;文件清理专家DuplicateCleaner,精准定位重复文件;全能在线工具箱3171.cn,集视频、音频、图片处理等功能于一体;免费PPT模板资源平台优品PPT,助力高效演示;开源绘图软件Krita,适合插画、漫画创作。这些软件功能强大但可能鲜为人知,值得尝试!
173 0
|
API
vue3知识点:provide 与 inject
vue3知识点:provide 与 inject
173 4
vue3知识点:provide 与 inject
|
存储 缓存 JSON
10款好用的开源 HarmonyOS 工具库
HarmonyOS NEXT 正式版即将发布,你在学习鸿蒙的过程还有哪些好用的工具库吗,欢迎分享给V 哥,关注威哥爱编程,一起学习鸿蒙开发。
689 4
|
测试技术 持续交付 开发工具
掌握 Git 钩子:提升代码质量和团队协作效率
在软件开发中,保证代码质量和团队协作至关重要。Git 钩子通过在特定操作(如提交、推送)时自动执行脚本,增强了代码审查、自动化测试和持续集成。常见钩子类型包括 `pre-commit`、`post-commit`、`pre-push` 和 `post-receive`。通过配置这些钩子,开发者可以实现代码风格检查、自动化测试和自动部署等任务,从而提升代码质量和团队协作效率。例如,`pre-commit` 钩子可用于运行 ESLint 检查 JavaScript 代码风格,确保每次提交都符合编码规范。
|
关系型数据库 数据库 开发工具
Stable Diffusion 本地部署教程
Stable Diffusion 本地部署教程
587 0
|
存储 Dubbo Java
JUC第二十五讲:JUC线程池-CompletableFuture 实现原理与实践
JUC第二十五讲:JUC线程池-CompletableFuture 实现原理与实践
408 0
|
程序员 编译器 C++
C++ 新特性 static_assert
C++ 新特性 static_assert
183 1