修正的最长路径算法

时间:2016-04-19 17:42:33

标签: algorithm recursion memoization

您将获得一个包含m行和n列的网格。单元格(0,0)包含数字0,而所有其他单元格包含一些正整数。通过向下或向右移动,我们最终将其设为单元格(mn)。 "长度"路径是路径上整数的总和。

最长路径问题是通过网格从(0,0)开始到(mn结束)找到最大总和。有时使用递归和memoization的组合来解决这个问题。

如果我们通过在网格上添加上限来修改问题,是否可以修改使用递归和memoization的动态编程方法来解决新问题?

例如,给定4x4网格:

0 2 3 4
2 4 3 1
3 4 3 2
4 3 2 1

且上限为4,算法将确定从左上角到右下角没有可能的路径满足该上限。

如果我们给出15的上限,我们确定通过网格的至少一条路径等于或小于15,并返回最大值。在这种情况下,我们返回15。

如果给出的上限大于通过网格的最长无约束路径,则问题会简化为上述最长路径问题。

0 个答案:

没有答案
相关问题