哈密顿绕行世界问题

HDOJ-2181

1.本题是典型的搜索记录路径的问题

2.主要使用的方法是dfs深搜,在输入的时候对vector进行排序,这样才能按照字典序输出。

3.为了记录路径,我使用的是两个vector,每次找到结果时,将一个vector赋值给另一个,再去输出。在dfs遍历顶点vector的时候,先push_back一个要搜的点,递归回来以后再pop_back

4.本题注意输出的格式

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
using namespace std;
vector<int> v[21];
vector<int> trace;
vector<int> t;
bool vis[21];
int m;
int cnt=0;
void print(){
t.pop_back();
cout<<cnt<<": "<<m<<" ";
for(int i=0;i<t.size();i++){
cout<<t[i]<<" ";
}
cout<<m<<endl;
}
void dfs(int u,int ans){
if(u==m&&ans>=20){
t=trace;
cnt++;
print();
return;
}
for(int i=0;i<v[u].size();i++){
if(!vis[v[u][i]]){
vis[v[u][i]]=1;
trace.push_back(v[u][i]);
dfs(v[u][i],ans+1);
vis[v[u][i]]=0;
trace.pop_back();
}
if(v[u][i]==m&&ans==19){
trace.push_back(v[u][i]);
dfs(v[u][i],ans+1);
trace.pop_back();
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int a;
for(int i=1;i<=20;i++){
for(int j=0;j<3;j++){
cin>>a;
v[i].push_back(a);
}
sort(v[i].begin(),v[i].end());
//cout<<v[i][0]<<" "<<v[i][1]<<" "<<v[i][2]<<endl;
}
while(cin>>m&&m){
memset(vis,0,sizeof(vis));
vis[m]=1;
cnt=0;
dfs(m,0);
}
//system("pause");
return 0;
}

HDOJ-2181(深搜记录路径)的更多相关文章

  1. PTA 7-33 地下迷宫探索(深搜输出路径)

    地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式.地道网是房连房.街连街.村连村的地下工事,如下图所示. 我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智. ...

  2. POJ 3984 迷宫问题 记录路径的广搜

    主要是学一下如何在广搜中记录路径:每找到一个点我就记录下这个点是由那个点得来的,这样我找到最后个点后,我就可以通过回溯得到我走过的路径,具体看代码吧~ #include<cstdio> # ...

  3. HDOJ/HDU 1242 Rescue(经典BFS深搜-优先队列)

    Problem Description Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is ...

  4. HDOJ/HDU 1015 Safecracker(深搜)

    Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Kle ...

  5. POJ 3414 Pots 记录路径的广搜

    Description You are given two pots, having the volume of A and B liters respectively. The following ...

  6. HDOJ 5294 Tricks Device 最短路(记录路径)+最小割

    最短路记录路径,同一时候求出最短的路径上最少要有多少条边, 然后用在最短路上的边又一次构图后求最小割. Tricks Device Time Limit: 2000/1000 MS (Java/Oth ...

  7. ACM/ICPC 之 Floyd+记录路径后继(Hdu1385(ZOJ1456))

    需要处理好字典序最小的路径 HDU1385(ZOJ1456)-Minimum Transport //Hdu1385-ZOJ1456 //给定邻接矩阵,求给定起点到终点的最短路径,若有相同路长的路径按 ...

  8. ****Curling 2.0(深搜+回溯)

    Curling 2.0 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Total ...

  9. HDU5723 Abandoned country (最小生成树+深搜回溯法)

    Description An abandoned country has n(n≤100000) villages which are numbered from 1 to n. Since aban ...

随机推荐

  1. k8s-0-集群

    Docker回顾 docker容器封装应用程序好处 内核在3.8以上,才能完整使用docker隔离功能(所有centos6不推荐用) Docker容器化封装应用程序缺点 容器编排工具有哪些 一: K8 ...

  2. kubernetes进阶(四)服务暴露-ingress控制器之traefik

    上一章我们测试了在集群内部解析service名称, 下面我们测试在集群外部解析: 根本解析不到,因为我们外部用的dns是10.4.7.11,也就是我们的自建bind dns,这个DNS服务器上也没有响 ...

  3. 3.使用nginx-ingress

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-06-25 13:54:15 星期二 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...

  4. 初学算法之dijkstra

    dijkstra的代码思想网上各路高手所述备矣.这里只是存下用邻接矩阵和邻接表实现的dijkstra.(白书代码) 邻接矩阵 1 void dijkstra(int s){ 2 int dis[s]= ...

  5. codeforces 9D(非原创)

    D. How many trees? time limit per test 1 second memory limit per test 64 megabytes input standard in ...

  6. codeforces 7B

    B. Memory Manager time limit per test 1 second memory limit per test 64 megabytes input standard inp ...

  7. prefetch & preload & prerender & dns-prefetch & preconnect

    prefetch & preload & prerender & dns-prefetch & preconnect performance optimization ...

  8. Cocos Creator 游戏开发

    Cocos Creator 游戏开发 https://www.cocos.com/products#CocosCreator 一体化编辑器: 包含了一体化.可扩展的编辑器,简化了资源管理.游戏调试和预 ...

  9. SVG animation(text, background)

    SVG animation(text, background) demo https://www.happyelements.com/ LICEcap bug Giphy 低帧率 gif https: ...

  10. Flutter Hackathon 2020

    Flutter Hackathon 2020 https://flutterhackathon.com/#/ Flutter Day https://mp.weixin.qq.com/s/ux17-A ...