【发布时间】:2016-08-30 22:39:31
【问题描述】:
给定一个维度为(m,n) 的二维整数矩阵,允许一个人从(0,0) 遍历到(m-1,n-1)。有效的移动是向右或向下。我被要求找到到达目的地的最大路径。这很简单,因为
MaxPathSum(i,j) = Math.max(MaxPathSum(i,j-1),MaxPathSum(i-1,j)) + Matrix[i][j]
但是,如果有两个人都可以从(0,0) 遍历到(m-1,n-1)。一旦有人访问了该单元格,该单元格的值将设置为零。鉴于此约束,这两条路径的最大总和是多少?
感谢任何提示。谢谢。
【问题讨论】:
-
原问题的哪一部分说一个单元格在被遍历时变为零?
-
而你只有两个选择,右和下。如果右边的单元格变为零,那么其他人的唯一选择就是向下。他们是轮流交替,还是一个人先完成迷宫?
-
@cricket_007:我也觉得这很令人困惑,但我相信部分问题在第二段中给出。
-
为问题添加另一条路径会将其从贪婪修改为 DP。因此,该方法应该完全不同:对于任何可能的路径 - 计算可以添加的最大路径,将任何交叉单元格视为第二条路径的“零”。然后迭代结果并选择最大值。
-
@alfasin:这两条路径的最大总和是否必然由两条不相互交叉的路径组成?
标签: algorithm dynamic-programming