本文主要是介绍hdu 2181 哈密顿绕行世界问题 (深搜),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
回朔搜索;
#include"stdio.h"
#include"string.h"int map[1000][10];
int mark[1000],sum[1000],m,t;
void bfs(int x,int s)
{
int i;
if(s==20&&(map[x][1]==m||map[x][2]==m||map[x][3]==m))
{
printf("%d: ",t++);
for(i=0;i<20;i++)
printf("%d ",sum[i]);
printf("%d\n",m);
}
for(i=1;i<=3;i++)
{
if(mark[map[x][i]]==0)
{
mark[map[x][i]]=1;
sum[s]=map[x][i];
bfs(map[x][i],s+1);
mark[map[x][i]]=0;
}
}
}
int main()
{
int i,k,h,p;
memset(map,0,sizeof(map));
for(i=1;i<=20;i++)
{
scanf("%d%d%d",&h,&k,&p);
map[i][1]=h;
map[i][2]=k;
map[i][3]=p;
}
while(scanf("%d",&m),m)
{
t=1;
memset(mark,0,sizeof(mark));
sum[0]=m;
mark[m]=1;
bfs(m,1);
}
return 0;
}
这篇关于hdu 2181 哈密顿绕行世界问题 (深搜)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!