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 ...
随机推荐
- C++中流操作符<<重载的实现
一.继承fstream后重载其<< 注意:重载函数中不能直接使用参数中的流out,否则会出现递归出错. class CLogStream : public ofstream { publi ...
- Python_小程序(云开发)
一.云开发API初始化 wx.cloud.init({ env:'test-x1dzi', //环境ID traceUser:true //是否在控制台查看用户信息 }) 二.云开发API初始化-服务 ...
- 设计模式(二十二)——状态模式(APP抽奖活动+借贷平台源码剖析)
24.1 APP 抽奖活动问题 请编写程序完成 APP 抽奖活动 具体要求如下: 1) 假如每参加一次这个活动要扣除用户 50 积分,中奖概率是 10% 2) 奖品数量固定,抽完就不能抽奖 3) 活动 ...
- L3-015. 球队“食物链”【DFS + 剪枝】
L3-015. 球队"食物链" 时间限制 1000 ms 内存限制 262144 kB 代码长度限制 8000 B 判题程序 Standard 作者 李文新(北京大学) 某国的足球 ...
- js uppercase first letter
js uppercase first letter const str = `abc`; str.slice(0, 1).toUpperCase(); // "A" str.sli ...
- markdown & git diff
markdown & git diff "dependencies": { "core-js": "3.6.5", "el ...
- Node.js Backend Developer
Node.js Backend Developer refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
- CORS All In One
CORS All In One 跨域资源共享 https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS CORS 请求类型 简单请求 预检请求 Ac ...
- yarn global add !== yarn add global
yarn global add !== yarn add global yarn does not exist the --global flag, but exits yarn global com ...
- 微软 AI 公开课
微软 AI 公开课 https://github.com/microsoft/ai-edu https://school.azure.cn/ https://docs.microsoft.com/le ...