【发布时间】:2017-05-02 07:54:49
【问题描述】:
我正在尝试学习动态编程技术。我正在看这个教程 - https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/。
请阅读Advanced部分中问题StarAdventure的问题说明。
我不明白为什么我们不能只使用经典的 DP 方法从左上角到右下角找到最佳路径三次删除最佳路径中找到的苹果。有人可以使用示例案例解释为什么这种方法不起作用。
问题描述:
给定一个具有 M 行和 N 列 (N x M) 的矩阵。每个牢房里都有许多苹果。 您从矩阵的左上角开始。您可以向下或向右移动一个单元格。您需要到达右下角。然后,您需要通过每一步向左或向上移动一个单元格来返回左上角单元格。到达左上角的单元格后,您需要再次返回右下角的单元格。 找出您可以收集的最大苹果数。 当你穿过一个牢房时——你会收集那里剩下的所有苹果。
限制:
1 N, M
【问题讨论】:
-
DP 在这里是合适的,链接的教程似乎暗示了这一点。是什么让您认为它不起作用?
-
你能把同样的苹果收集两次吗?还是在您访问它们后细胞已耗尽?问题陈述没有这么明确地说,但我想作者的意图是后者。否则,如您所说,三步走最大值将只是单步最大值的三倍。
标签: algorithm dynamic-programming