【发布时间】:2018-07-02 06:56:42
【问题描述】:
我最近出现在一个工作面试中,我被问到流行的 RAT IN A MAZE PROBLEM,其中有一个由 2 维数组表示的迷宫,其中分别包含 0 和 1 表示开放路径和墙壁,我们必须打印最短的路径。
我使用回溯解决了这个问题,还打印了所有可能的路径。
但后来面试官提高了难度级别,并要求我用一个新的条件来解决相同的问题,即老鼠可以在用户输入 K 的地方跳“K”个墙壁。
现在我尝试了很多,但如果允许绊 K 墙,我不知道如何找到最短路径。我想是否可以通过 DYNAMIC PROGRAMMING 解决,但最终无法实现。
面试官也没有透露解决方案。 谁能解释一下这个问题的解决方法?
【问题讨论】:
-
“绊倒”墙壁是指穿过墙壁还是拆除墙壁?
-
这是一个你可以使用 Dijkstra 解决的变体,其中每个节点还存储已移除的墙壁。
标签: algorithm recursion backtracking