【发布时间】:2015-03-06 04:32:57
【问题描述】:
给定一个 n 个实数序列A(1) ... A(n),确定一个连续的子序列A(i) .. . A(j) 其子序列中的元素之和被最大化。
解决办法是:
M(j) = max sum over all windows ending in j
M(j) = max{M(j-1) +A[j], A[j]}
有人可以解释一下这对以下子序列是如何工作的:
1, 5, -10, 5。因为在第一个5 和-10 之间,循环在-4 (M(j-1) +A[j]) 或-10 (M(j-1) +A[j]) 的总和之间进行选择。但是,最好的总和是6。
那么重复不应该是:
M(j) = max{M(j-1) +A[j], A[j], M(j-1)}
【问题讨论】:
标签: algorithm dynamic-programming