和大多数的迷宫类似,本题中的“箭头迷宫“,也是从一个交叉点到另一个交叉点直到到达目标交叉点。
”箭头迷宫“特殊的是,当从给定的方向到达一个交叉点时,在交叉点的入口附近给定一些符号,用来表示从行驶方向退出这个交叉点时的应该走的方向,方向包括向左、直行、向右或者是左、右、直行的混合。
Figure1给出了一个”箭头迷宫“的样例。
每个交叉点是通过(行,列)来表示的,左上角第一个交叉点就是用(1,1)。如图Figure1中所示,此迷宫的入口的交叉点是(3,1),目标交叉点是(3,3)。
从交叉点(3,1)向北开始走,当从(3,1)走到(2,1)时,(2,1)处的标志表示当你从南方(向北行驶)接近(2,1)时,你可以继续前进。继续前进将你带到(1,1)。当你从南方靠近时,(1,1)处的符号表示你只能通过右转退出(1,1)。这会让你转向东边,现在从(1,1)走向(1,2)。到目前为止,没有任何选择。当你继续从(1,2)到(2,2)到(2,3)到(1,3)时也是如此。然而现在,当你从(1,3)向西移动(1,2)时,你可以选择继续直行或向左转,继续直行会将带你往(1,1),而向左转将带你到(2,2)。
这个迷宫的实际(唯一)解决方案是以下交叉序列:(3,1)(2,1)(1,1)(1,2)(2,2)(2,3)(1,3) (1,2)(1,1)(2,1)(2,2)(1,2)(1,3)(2,3)(3,3)。
你的任务,就是编写一个程序,按照要求从入口交叉点开始,达到目标交叉点结束的解决方案,当然这个路径要尽可能的短。