查找网格元素之间的路径

时间:2015-06-29 11:29:11

标签: java

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

1 个答案:

答案 0 :(得分:0)

我有解决方案的逻辑。您需要自己编写代码(或至少尝试编写代码,如果您遇到困难我可以提供进一步的帮助,但我不会发布完整的代码!)

诀窍是找到一个起始端对,其中两个都在"边缘"矩阵 例如,对1 2220 23就是这样的对。 一旦找到这样的一对(任何一个会做),你就会沿着边缘绘制路径。

然后,需要重新计算矩阵的边缘以反映绘制的路径,因此一旦绘制1 22数字7,12,17成为边数(因为数字6,11,16被删除)

之后,您会看到对4 17成为"在边缘"并且该过程可以重复,直到考虑所有对。

编辑: 在5 18对上干涸之后,我看到了#34;处于边缘状态"包括对角线位置:

xxxxX
xxxxx
xxxAx
xxxx*
xx***

这是绘制对20 23后的矩阵状态。位置A是"在边缘"因为它的东南(右下角)角现在在矩阵之外。