HDOJ-2181(深搜记录路径)
哈密顿绕行世界问题
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(深搜记录路径)的更多相关文章
- PTA 7-33 地下迷宫探索(深搜输出路径)
地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式.地道网是房连房.街连街.村连村的地下工事,如下图所示. 我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智. ...
- POJ 3984 迷宫问题 记录路径的广搜
主要是学一下如何在广搜中记录路径:每找到一个点我就记录下这个点是由那个点得来的,这样我找到最后个点后,我就可以通过回溯得到我走过的路径,具体看代码吧~ #include<cstdio> # ...
- HDOJ/HDU 1242 Rescue(经典BFS深搜-优先队列)
Problem Description Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is ...
- HDOJ/HDU 1015 Safecracker(深搜)
Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Kle ...
- POJ 3414 Pots 记录路径的广搜
Description You are given two pots, having the volume of A and B liters respectively. The following ...
- HDOJ 5294 Tricks Device 最短路(记录路径)+最小割
最短路记录路径,同一时候求出最短的路径上最少要有多少条边, 然后用在最短路上的边又一次构图后求最小割. Tricks Device Time Limit: 2000/1000 MS (Java/Oth ...
- ACM/ICPC 之 Floyd+记录路径后继(Hdu1385(ZOJ1456))
需要处理好字典序最小的路径 HDU1385(ZOJ1456)-Minimum Transport //Hdu1385-ZOJ1456 //给定邻接矩阵,求给定起点到终点的最短路径,若有相同路长的路径按 ...
- ****Curling 2.0(深搜+回溯)
Curling 2.0 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total ...
- HDU5723 Abandoned country (最小生成树+深搜回溯法)
Description An abandoned country has n(n≤100000) villages which are numbered from 1 to n. Since aban ...
随机推荐
- 1.初识Redis
作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-08-14 20:35:36 星期三 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...
- 计组CPU设计实验关键材料和关键设计
我记得这是2016春季学期搞得,参考和学习了很多别人的东西,这里小小的总结一下,逻辑性还不是太强,还需要好好整理 首先是指令集 CPU架构 外部接线架构 指令格式 机器状态自动机 这部分忘了,汗 这部 ...
- 内存耗尽后Redis会发生什么
前言 作为一台服务器来说,内存并不是无限的,所以总会存在内存耗尽的情况,那么当 Redis 服务器的内存耗尽后,如果继续执行请求命令,Redis 会如何处理呢? 内存回收 使用Redis 服务时,很多 ...
- CNN可视化技术总结(四)--可视化工具与项目
CNN可视化技术总结(一)-特征图可视化 CNN可视化技术总结(二)--卷积核可视化 CNN可视化技术总结(三)--类可视化 导言: 前面介绍了可视化的三种方法--特征图可视化,卷积核可视化,类可视化 ...
- flex item default All In One
flex item default All In One flex item default 初始值 === flex: 0 1 auto; https://drafts.csswg.org/css- ...
- Flutter App 真机调试
Flutter App 真机调试 Deploy to iOS devices https://flutter.dev/docs/get-started/install/macos#deploy-to- ...
- alipay 小程序开发教程
alipay 小程序开发教程 https://opendocs.alipay.com/mini/00ccmd 或访问开放平台:https://opendocs.alipay.com/mini/00cc ...
- vuex bug & vue computed setter
vuex bug & vue computed setter https://vuejs.org/v2/guide/computed.html#Computed-Setter [Vue war ...
- WebView & WKWebView & UIWebView
WebView & WKWebView & UIWebView WebView WKWebView https://developer.apple.com/documentation/ ...
- js 脏检测
参考 基础知识 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...