【发布时间】:2015-10-07 12:35:23
【问题描述】:
我们有一个迷宫 R X C,其中 1
如果正方形中有-1,则假设它是一个石块 那个细胞,你不能穿过那个细胞。你可以从 第一列上的任何单元格(当然没有-1)并退出 最后一列的任何单元格。您可以向上、向下、向右移动。作为 你移动,你收集单元格中的数字,除了-1,它表示一个 大石头被放置在我们的迷宫中。每个单元格必须访问一次 仅限。
从左到右可以选择最大数字总和的路径是什么?简单的 !! Dp 可以施展魔法但是……这里有一个问题——规则 5。
如果我们能到达第一行或最后一行,我们就可以走出迷宫。但是之后 发生了两件事:
a) 我们失去了迄今为止收集的所有积分。
b) 我们在同一列但在相反的单元格中租用迷宫。
例如:考虑 3X3 迷宫 (1 -indexed) 。所以如果我们到达 说 , (1,2) 我们可以从那里退出并失去所有积分并进入 (3,2) , 游戏继续....
现在,我们必须找到得分最高的路径。
我无法看到我们如何通过动态编程捕捉这种在迷宫中跳出和返回的过程?另外,我们每次都得打'0'。
例子:
考虑迷宫:
-1 4 5 1
2 -1 2 4
3 3 -1 -1
4 2 1 2
回答 =16。
(4,1) -> (4,2) -> (1,2) -> (1,3) -> (2,3) -> (2,4) -> (1,4)
【问题讨论】:
-
@ergonaut ,在上面的示例中: (4,2) -> (1,2) 使我们失去所有收集的分数,因此当我们达到 (1,2) 时,我们的分数为 '0' .否则,如果我们只考虑 (4,1) -> (4,2) 我们将得到 (4+2) =6 的分数。
-
格式化迷宫会有帮助。
-
我看不出“规则 5”如何阻碍您的一般 DP 方法。只需添加一个条件来处理这种情况。
-
我还是没看出来你是怎么得16的。等你再进去,我加起来才14。
-
@ergonaut ,从 (1,2) 开始,如上述路径 = 4 +5+2 + 4+1 =16
标签: algorithm data-structures graph dynamic-programming