哈密顿路 题解

【题目描述】

邮递员在送信时,为了节省路途,自己规定:每次总是从 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。在递归时同时输出答案。


转载于:https://www.cnblogs.com/linjia64/p/9607175.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值