查找矩阵中是否有路径?

时间:2017-06-20 02:14:52

标签: java algorithm matrix breadth-first-search dfs

给定大小为N的方阵。它由元素0,1和2组成。我们必须确定是否存在从位置[0,0]到[N-1,N-1]的任何路径。我们可以向上,向下,向左,向右四个方向移动。

我们只能穿过0。 1是阻塞元素,,而2是可移动块,如果可能,可以移动以产生路径。

我能够通过递归来解决简单的迷宫问题,但是我应该如何处理可移动的块。

Example 
Matrix :
0 1 1 0 1
0 2 0 0 1
1 0 1 0 1
1 1 2 0 0

如果我们从位置[​​1,1]移动到[2,1]

,我们可以制作路径

1 个答案:

答案 0 :(得分:1)

如果你知道如何解决这个简单的迷宫,这应该不是一个难题。解决方案应该只是简单迷宫的延伸。

您可以使用BFS或DFS来解决问题。这里的技巧是扩展原始状态(x,y),你的当前位置是(x,y,x0,y0,x1,y1,xn-1,yn-1),其中(xi,yi)是位置第i个可移动区块。

此外,不是4个方向运动(向上,向下,向左,向右移动),而是应该有4个可能的换档动作,向左移动左移动块(如果存在),向上移动块,向右移动右移,向下移动阻止。因此,有8种可能的行动从一种状态转移到另一种状态。

希望这有帮助。