哈密顿绕行世界问题 (深搜(记录路径))
来源:互联网 发布:软件测试ppt 编辑:程序博客网 时间:2024/04/30 06:19
题目来源:https://vjudge.net/problem/HDU-2181
【题意】
汉语意思不再解释。
【思路】
深搜+记录路径。
这里叙述一下深搜与广搜记录路径的不同之处。(个人观点)
深搜来说,记录路径只需要一个普通数组,因为深搜可以返回。
广搜的话,需要在结构体里开数组,因为广搜的每一步都会产生一个新的组合。
【代码】
#include<map>#include<stack>#include<queue>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<iostream>#include<string>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int INF=1e9;typedef long long LL;int num=0,m;;struct pp{ int a[3];}z[23];int load[25];bool vis[25];void dfs(int x,int t){ if(x==m&&t!=0) { if(t!=20) return ;//剪枝 printf("%d: %d",++num,m); for(int i=1;i<=20;i++) printf(" %d",load[i]); printf("\n"); return ; } for(int i=0;i<3;i++) { if(!vis[z[x].a[i]]) { vis[z[x].a[i]]=1; load[t+1]=z[x].a[i]; dfs(z[x].a[i],t+1); vis[z[x].a[i]]=0;//取消标记 } }}int main(){ for(int i=1;i<=20;i++) scanf("%d%d%d",&z[i].a[0],&z[i].a[1],&z[i].a[2]); while(~scanf("%d",&m)) { if(!m) break; mem(vis,0); dfs(m,0); }}
0 0
- 哈密顿绕行世界问题 (深搜(记录路径))
- HDU2181哈密顿绕行世界问题(DFS +路径输出)
- 哈密顿绕行世界问题(dfs)
- 哈密顿绕行世界问题 (DFS)
- 哈密顿绕行世界问题(hdu2181)
- 哈密顿绕行世界问题(DFS)
- hdu 2181 哈密顿绕行世界问题 (深搜)
- HDOJ2188 哈密顿绕行世界问题(DFS)
- HDOJ 2181 哈密顿绕行世界问题 (回溯)
- 杭电2181 哈密顿绕行世界问题(DFS)
- HDOJ 题目2181 哈密顿绕行世界问题(DFS)
- HDU 2181 哈密顿绕行世界问题 (DFS)
- HDU - 2181 哈密顿绕行世界问题(简单dfs)
- HDU 2181 哈密顿绕行世界问题(水DFS)
- HDU 2181-哈密顿绕行世界问题(裸dfs)
- hdu 2181 哈密顿绕行世界问题(dfs)
- HDU 2181哈密顿绕行世界问题 (简单DFS)
- HDU 2181哈密顿绕行世界问题(DFS)
- Java多线程-线程池ThreadPoolExecutor构造方法和规则
- -Xms和-Xmx的值设置成一样 Java不断地吃内存
- 上传图片到 OSS 带压缩图片代码
- poj 3233 Matrix Power Series
- Unity 自动添加tag,SortingLayers,Layer
- 哈密顿绕行世界问题 (深搜(记录路径))
- enum的使用
- HDU 4622 Reincarnation (区间不相同子串个数:字符串哈希 | 后缀数组 | 后缀自动机)
- Android 复制屏幕上画面内容
- hdu4920——Matrix multiplication(矩阵快速幂or循环外提)
- win8下Source Insight has not been installed completely问题的解决
- java-登陆注册案例
- 小知识--背景图片url是data:开头的
- 设计模式之建造者模式java(Builder)