【问题标题】:Find out minimum steps to reach any corner of maze?找出到达迷宫任何角落的最小步骤?
【发布时间】:2018-11-13 05:58:08
【问题描述】:

您已经给出了一个n*m 迷宫(矩阵),其中包含值 012 。值 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).

帮我解决这个问题!!

【问题讨论】:

  • 你学到了什么?图,Djikstra,最短路径?
  • 刚接触编程,刚解决了一些与graph(bfs,dfs,mst)相关的基本问题,也开始学习回溯。在解决迷宫问题的速度时会想到问题。
  • 所以要解决这个问题,请将其转换为图形,然后使用您学过的一种算法来找到最短路径。

标签: algorithm data-structures backtracking maze


【解决方案1】:

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

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

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

可以有几条通往最小距离的路径。如果你想追踪路径,那么你可以维护另一个2D网格来存储每个2D点的父信息,同时执行BFS

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 2012-04-08
    相关资源
    最近更新 更多