找出到达迷宫任何角落的最低限度的步骤?

时间:2018-11-13 05:58:09

标签: algorithm data-structures backtracking maze

您给了n*m迷宫(矩阵),其中包含值 0 1 2 。值 0 表示单元格处于打开状态,值 1 表示单元格处于阻塞状态,值 2 是起点。您只能在迷宫中向左,向右,向上,向下方向走。找出从起点到矩阵任意角的最小距离。

示例:
n = 4,m = 5
迷宫:

  

1 1 1 0 1
1 0 2 0 1
1 0 1 0 1
0 0 1 0 1

答案为2。
路径->起点(2 ,3)->(2,4)->(1,4).

帮我解决这个问题!

1 个答案:

答案 0 :(得分:0)

如果您熟悉BFS并且已经解决了以下经典问题:

  

计算2D中从起点到终点的最短路径   网格有一些障碍!

然后,您可以通过从起点运行一次BFS,然后遍历所有具有值0的拐角点并比较它们之间的最小距离来解决问题。

可能有多条路径导致最小距离。如果要跟踪路径,则可以维护另一个2D网格,以在执行2D时存储每个BFS点的父级信息。

如果在编码时遇到任何问题,请告诉我。谢谢!