首页 > 其他 > 详细

哈密尔顿环 dfs

时间:2017-05-05 21:31:39      阅读:296      评论:0      收藏:0      [点我收藏+]

( ⊙ o ⊙ ) 题目:

技术分享

 

(⊙v⊙)嗯,代码:

 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 const int N = 25;
 6 int n, cnt;
 7 int a[N][N];
 8 int v[N], p[N];
 9 
10 void print(){
11     printf("Route #%d: ", ++cnt);//路径条数 
12     for(int i=1; i<=p[0]; i++) printf("%d - ", p[i]);
13     printf("1\n");
14 }
15 
16 void dfs(int x){
17     v[x] = 1, p[++p[0]] = x;
18     if(p[0] == n)    {
19         if(a[p[0]][1]) print();
20     }
21     else for(int i=1; i<=n; i++)
22     if(a[x][i] && !v[i]) dfs(i);
23     v[x] = 0, p[p[0]] = 0, --p[0];//回溯过程 
24 }
25 
26 int main(){
27     scanf("%d", &n);
28     for(int i=1; i<=n; i++)
29     for(int j=1; j<=n; j++)
30     scanf("%d", &a[i][j]);//输入一个表示i,j之间是否有边的矩阵 
31     dfs(1);
32     return 0;
33 }

 

哈密尔顿环 dfs

原文:http://www.cnblogs.com/wsdestdq/p/6814843.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!