您给了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).
帮我解决这个问题!
答案 0 :(得分:0)
如果您熟悉BFS
并且已经解决了以下经典问题:
计算2D中从起点到终点的最短路径 网格有一些障碍!
然后,您可以通过从起点运行一次BFS,然后遍历所有具有值0
的拐角点并比较它们之间的最小距离来解决问题。
可能有多条路径导致最小距离。如果要跟踪路径,则可以维护另一个2D
网格,以在执行2D
时存储每个BFS
点的父级信息。
如果在编码时遇到任何问题,请告诉我。谢谢!