标签:path title iostream bsp ima ace put visit 邻接矩阵
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 }
标签:path title iostream bsp ima ace put visit 邻接矩阵
原文地址:https://www.cnblogs.com/FengZeng666/p/10352790.html