看到next_permutation好像也能过╮(╯▽╰)╭

这题学习点:

1.建图做映射

2.通过定序枚举保证字典序最小

3.strtok,sscanf,strchr等函数又复习了一遍,尽管程序中没有实际用上

4.剪枝,或者回溯

#include<bits/stdc++.h>
using namespace std; int G[][],deg[];
bool vG[][];//判读连通
int pos[];
bool vis[];
int k;
int best[];
int cnt;
int ID[];
char rev_ID[]; void dfs(int d,int width)
{
if(d == cnt){
if(width < k){
k = width;
memcpy(best,pos,sizeof(pos));
}
return;
}
for(int i = ;i < cnt; i++) if(!vis[i]){//把i放在d位置
pos[d] = i; //prune 计算i和之前确定位置的结点的最大距离
int m = ;
for(int j = d-; j >=; j--) if(vG[i][pos[j]]) {
m = max(m,d-j);
if(m >= k) continue;//这题数据水了,这里写成return还是能过
} //prune2 计算u和未确定位置的相邻点的个数,适用于简单图
int ct = ;
for(int j = ; j < deg[i]; j++) if(!vis[G[i][j]]) ct++;
if(ct >= k) continue; vis[i] = ;
dfs(d+,max(width,m));
vis[i] = ;
}
} int main()
{
// freopen("in.txt","r",stdin);
char buf[];
const int INF = 0x3fffffff;
while(fgets(buf,,stdin) && *buf!='#'){
cnt = ;
memset(vG,,sizeof(vG));
memset(deg,,sizeof(deg));
memset(ID,-,sizeof(ID));
memset(vis,,sizeof(vis));
bool ap[] ;
memset(ap,,sizeof(ap));
for(char *cur = buf; *cur ; cur++) {
int u = *cur - 'A';
if(<= u && u < ) ap[u] = ;
} for(int i = ; i < ; i++){
if(ap[i]){
rev_ID[cnt] = i+'A';
ID[i] = cnt++;
}
} for(char *cur = buf; *cur ; cur++) {
int u = ID[*cur - 'A'];
for(cur+= ; *cur != '\n' && *cur != ';' ; cur++) {
int v = ID[*cur - 'A'];
vG[u][v] = vG[v][u] = ;
}
} for(int i = ; i < cnt; i++)
for(int j = ; j < cnt; j++){
if(vG[i][j]) G[i][deg[i]++] = j;
}
k = INF;
dfs(,);
for(int i = ; i < cnt; i++){
printf("%c ",rev_ID[best[i]]);
}
printf("-> %d\n",k);
}
return ;
}

最新文章

  1. 学习SpringMVC——拦截器
  2. C 语言学习 第12次作业总结
  3. MongoDB 知识要点一览
  4. 【LEETCODE OJ】Clone Graph
  5. 在Cubieboard上关闭irqbalance服务避免内存泄漏
  6. python基础教程(一)
  7. 模型的元数据Meta -- Django从入门到精通系列教程
  8. alpha冲刺第四天
  9. Spring MVC(一)五大核心组件和配置
  10. 死磕 java集合之TreeMap源码分析(四)-内含彩蛋
  11. php发送邮箱
  12. NLog类库使用探索——编程配置
  13. windows下Anaconda的安装与配置正解
  14. Network - SSL/TLS的基本概念
  15. ESXi安装时遇到不识别的硬件的处理
  16. 【抓包】【Charles】
  17. font-face 跨域解决
  18. 7.1 安装软件包的三种方法 7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法 7.5 yum搭建本地仓库
  19. more 可翻页查看(一页一页翻动)
  20. quartusII13.0使用教程

热门文章

  1. VS~通过IIS网站启用&quot;域名&quot;调试
  2. Golang : pflag 包简介
  3. ue4 杂记
  4. $.extend(),与$.fn.extend() 讲解(一)
  5. python进阶02 特殊方法与特殊属性
  6. 题解 poj1845 Sumdiv (数论) (分治)
  7. Vue --6 router进阶、单页面应用(SPA)带来的问题
  8. jQuery解决ajax请求的跨域问题
  9. DotNetAnywhere
  10. 076 Minimum Window Substring 最小窗口子字符串