Plz帮助我解决这个问题,我无法做到这一点
给定一个5 x 5网格,其中包含编号为1到25的图块和一组5个起始点对。 对于每对,找到从起点到终点的路径。 路径应符合以下条件:
a)只允许水平和垂直移动 b)两条路径不应重叠 c)路径应覆盖整个网格输入:
输入由5行组成。 每行包含两个以空格分隔的整数,即起始点和结束点。输出:
打印5行。每行由空格分隔的整数组成,相应的起始端对的路径。 假设这样的路径始终存在。 如果是多个解决方案,请打印其中任何一个。示例输入
1 22 4 17 5 18 9 13 20 23
示例输出
1 6 11 16 21 22 4 3 2 7 12 17 5 10 15 14 19 18 9 8 13 20 25 24 23
答案 0 :(得分:0)
我有解决方案的逻辑。您需要自己编写代码(或至少尝试编写代码,如果您遇到困难我可以提供进一步的帮助,但我不会发布完整的代码!)
诀窍是找到一个起始端对,其中两个都在"边缘"矩阵
例如,对1 22
和20 23
就是这样的对。
一旦找到这样的一对(任何一个会做),你就会沿着边缘绘制路径。
然后,需要重新计算矩阵的边缘以反映绘制的路径,因此一旦绘制1 22
数字7,12,17成为边数(因为数字6,11,16被删除)
之后,您会看到对4 17
成为"在边缘"并且该过程可以重复,直到考虑所有对。
编辑:
在5 18
对上干涸之后,我看到了#34;处于边缘状态"包括对角线位置:
xxxxX
xxxxx
xxxAx
xxxx*
xx***
这是绘制对20 23
后的矩阵状态。位置A是"在边缘"因为它的东南(右下角)角现在在矩阵之外。