poj2181 哈密顿绕行世界问题

来源:互联网 发布:javascript教程廖雪峰 编辑:程序博客网 时间:2024/06/06 02:23

哈密顿绕行世界问题

原题链接:点击打开链接
//深搜的题,读懂题意,搞清关系即可

#include <stdio.h>#include <string.h>int a[25][5];  int vis[25]; //标记走过的城市 int ans[25];//记录走过的城市 int der = 1; //输出编号 int c;void dfs(int m,int i){vis[m] = 1;ans[i] = m;for(int j = 0;j < 3;j ++ ){int t = a[m][j];if(t == c && i == 19)  //i=0时 t为c后的一个数,i=19时为c后的第20个数即其本身 {printf("%d:  ",der ++ );for(int k = 0;k < 20;k ++ )printf("%d ",ans[k]);printf("%d\n",c);}if(!vis[t])  //没被标记进入下一层 dfs(t,i + 1);}vis[m] = 0;}int main(){int m,i;for(i = 1;i <= 20;i ++ )scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);while(scanf("%d",&m) , m){c = m;memset(vis,0,sizeof(vis));dfs(m,0);}return 0;}


0 0
原创粉丝点击