您将获得一个包含m
行和n
列的网格。单元格(0,0)包含数字0,而所有其他单元格包含一些正整数。通过向下或向右移动,我们最终将其设为单元格(m
,n
)。 "长度"路径是路径上整数的总和。
最长路径问题是通过网格从(0,0)开始到(m
,n
结束)找到最大总和。有时使用递归和memoization的组合来解决这个问题。
如果我们通过在网格上添加上限来修改问题,是否可以修改使用递归和memoization的动态编程方法来解决新问题?
例如,给定4x4网格:
0 2 3 4
2 4 3 1
3 4 3 2
4 3 2 1
且上限为4,算法将确定从左上角到右下角没有可能的路径满足该上限。
如果我们给出15的上限,我们确定通过网格的至少一条路径等于或小于15,并返回最大值。在这种情况下,我们返回15。
如果给出的上限大于通过网格的最长无约束路径,则问题会简化为上述最长路径问题。