【DFS】hdu 2181 哈密顿绕行世界问题
2013-08-14 21:40
429 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2181
分析:没啥说的,直接暴搜
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int NM=25;
int a[NM][NM],save[NM],ans;
bool vis[NM];
void DFS(int x,int n,int cc)
{
int i;
if(cc==21 && x==n){
printf("%d: ",ans++);
for(i=0;i<=20;i++)
printf(" %d",save[i]);
printf("\n");
}
for(i=1;i<=20;i++){
if(!vis[i] && a[x][i]){
save[cc]=i;
vis[i]=1;
DFS(i,n,cc+1);
vis[i]=0;
}
}
}
int main()
{
int i,n,x,y,z;
for(i=1;i<=20;i++){
scanf("%d%d%d",&x,&y,&z);
a[i][x]=a[i][y]=a[i][z]=1;
}
ans=1;
while(scanf("%d",&n)&&n){
save[0]=n;
memset(vis,0,sizeof(vis));
DFS(n,n,1);
}
return 0;
}
分析:没啥说的,直接暴搜
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int NM=25;
int a[NM][NM],save[NM],ans;
bool vis[NM];
void DFS(int x,int n,int cc)
{
int i;
if(cc==21 && x==n){
printf("%d: ",ans++);
for(i=0;i<=20;i++)
printf(" %d",save[i]);
printf("\n");
}
for(i=1;i<=20;i++){
if(!vis[i] && a[x][i]){
save[cc]=i;
vis[i]=1;
DFS(i,n,cc+1);
vis[i]=0;
}
}
}
int main()
{
int i,n,x,y,z;
for(i=1;i<=20;i++){
scanf("%d%d%d",&x,&y,&z);
a[i][x]=a[i][y]=a[i][z]=1;
}
ans=1;
while(scanf("%d",&n)&&n){
save[0]=n;
memset(vis,0,sizeof(vis));
DFS(n,n,1);
}
return 0;
}
相关文章推荐
- hdu(2181):哈密顿绕行世界问题,dfs遍历
- HDU 2181哈密顿绕行世界问题 (简单DFS)
- hdu 2181 哈密顿绕行世界问题 (DFS~)
- HDU-2181-哈密顿绕行世界问题(DFS)
- hdu 2181 哈密顿绕行世界问题 (dfs)
- HDU-2181-哈密顿绕行世界问题(DFS)
- HDU-2181-哈密顿绕行世界问题 [dfs]
- HDU 2181哈密顿绕行世界问题(DFS)
- HDU 2181 哈密顿绕行世界问题 (dfs)
- hdu 2181:哈密顿绕行世界问题(dfs)
- HDU 2181哈密顿绕行世界问题(DFS)
- (step4.3.8)hdu 2181(哈密顿绕行世界问题——DFS)
- HDU 2181 哈密顿绕行世界问题 dfs 难度:1
- 【DFS】hdu 2181 哈密顿绕行世界问题
- (step4.3.8)hdu 2181(哈密顿绕行世界问题——DFS)
- HDU 2181哈密顿绕行世界问题(还是DFS)
- hdu-2181哈密顿绕行世界问题(dfs)
- HDU 2181 哈密顿绕行世界问题(DFS 深度优先搜素)
- hdu 2181 哈密顿绕行世界问题(dfs)
- HDU 2181--哈密顿绕行世界问题【DFS】