分析:DFS即可。
#include<iostream>
using namespace std;
bool map[21][21];
bool vis[21];
int ans[21],num,m;
void init()
{
int i,a;
memset(map,false,sizeof(map));
for(i=1;i<=20;i++) //构图
{
map[i][cin>>a,a]=true;
map[i][cin>>a,a]=true;
map[i][cin>>a,a]=true;
}
}
void dfs(int d,int x,int s)
{
int i;
ans[d]=x;
if(d==19)
{
if(!map[x][m]) return ;
cout<<++num<<": ";
for(i=0;i<=d;i++)
cout<<" "<<ans[i];
cout<<" "<<ans[0]<<endl;
return ;
}
for(i=1;i<=20;i++)
if(map[x][i] && !vis[i])
{
vis[i]=true;
dfs(d+1,i,s);
vis[i]=false;
}
}
int main()
{
ios::sync_with_stdio(false);
init();
while(cin>>m && m)
{
memset(vis,false,sizeof(vis));
num=0;
vis[m]=true;
dfs(0,m,m);
}
return 0;
}HDU ACM 2181 哈密顿绕行世界问题->DFS(深度有限搜索)
原文地址:http://blog.csdn.net/a809146548/article/details/45692111