【发布时间】:2018-04-09 14:37:49
【问题描述】:
假设有一个包含N 行和M 列的矩阵。
你从左下角开始遍历,你的当前点P为0,空间S大于0。在矩阵中的每一点,坐标要么为空,要么包含点。如果点的大小为X,值V,则可以在到达坐标时选择是否拾取。
对于矩阵的遍历,我们只能上移一行,从三列中选择一列(即(i + 1, j − 1)、(i + 1, j)或(i + 1, j + 1))
积分增加PV,S减少X。
我正在尝试编写一个动态编程算法,该算法将遍历此并返回导致最多点数的最佳路径。
我认为子问题是:
L(N, j) = Null
L(i, 0) = max(L(i + 1, 0), L(i + 1, 1))
L(i, j) = max(L(i + 1, j − 1), L(i + 1, j), L(i + 1, j + 1))
L(i, M) = max(L(i + 1, j - 1), L(i + 1, j))
这行得通吗?我将如何将其引入算法?
【问题讨论】:
标签: algorithm matrix dynamic-programming