HDU 2181 哈密顿绕行世界问题

Sample Input
2 5 20
1 3 12
2 4 10
3 5 8
1 4 6
5 7 19
6 8 17
4 7 9
8 10 16
3 9 11
10 12 15
2 11 13
12 14 20
13 15 18
11 14 16
9 15 17
7 16 18
14 17 19
6 18 20
1 13 19
5
0
 
Sample Output

 

复制代码
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int Map[21][21] = { 0 };  //邻接矩阵
 6 int path[21];              //记录每一次答案的路线
 7 bool visited[21] = { false };
 8 int num = 1; //路径的编号
 9 
10 
11 void dfs(int city, int cur) //city为当前访问的城市,已经访问了cur个城市
12 {
13     path[cur] = city;    //将当前城市记录在路径上
14     visited[city] = true;
15 
16     if (cur == 20)        //如果已经访问了20个城市
17     {
18         if (Map[city][path[1]] == 1)    //这个城市与起点城市之间存在路径
19         {
20             cout << num << ":  ";
21             num++;
22             for (int i = 1; i <= 20; ++i)    
23                 cout << path[i] << ' ';
24             cout << path[1] << endl;
25         }
26     }
27 
28     for (int i = 1; i <= 20; ++i)
29     {
30         if (Map[i][city] == 1 && !visited[i])
31         {
32             dfs(i, cur+1);        //注意此处不能是++cur
33             visited[i] = false;    //dfs完要把访问过的顶点重新置为未访问状态
34         }
35     }
36 
37 }
38 
39 
40 int main()
41 {
42     //创建邻接矩阵
43     int city;
44     for (int i = 1; i <= 20; ++i)
45     {
46         for (int j = 1; j <= 3; ++j)
47         {
48             cin >> city;
49             Map[i][city] = 1;
50         }
51     }
52 
53     int m;
54     while (cin >> m && m != 0)
55     {
56         dfs(m, 1);
57         num = 1;
58     }
59 
60 
61     return 0;
62     
63 }
复制代码

 

 

 

 

posted @   拾月凄辰  阅读(175)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示
主题色彩