哈密顿路 题解

【题目描述】

邮递员在送信时,为了节省路途,自己规定:每次总是从 n 个村子中选择其中一个合适的村子出发,途中每个村子仅且经过一次,送完所有的信。已知各个村子的道路连通情况。输出所有符合要求的路线。如果没有输出“no road”。

【输入】

第一行:整数 n:村子的个数。接下来是一个 n*n 的 0、1 矩阵,表示 n 个村子的连同情况,如:a[i,j]=1 ,表示第 i 和第 j 个村子之间有路可走,如果 a[i,j]=0,表示他们之间无路可走。

【输出】

按序号从小到大输出所有可行的线路

【样例输入】

7

0 1 0 1 1 0 0

1 0 1 0 1 0 0

0 1 0 0 0 0 1

1 0 0 0 0 0 0

1 1 0 0 0 1 0

0 0 0 0 1 0 1

0 0 1 0 0 1 0

【样例输出】

2 3 7 6 5 1 4

3 7 6 5 2 1 4

4 1 2 3 7 6 5

4 1 2 5 6 7 3

4 1 5 2 3 7 6

4 1 5 6 7 3 2

5 6 7 3 2 1 4

6 7 3 2 5 1 4

=======================题解======================

深搜。

   首先邻接表存图,之后从1开始深搜,用vis数组记录是否走过,return时改回false,走过的地方数等于总数时或vis==true时return。在递归时同时输出答案。


阅读更多

没有更多推荐了,返回首页