查找数组的稀疏索引集的最大权重

时间:2013-09-15 15:10:07

标签: algorithm indexing dynamic-programming recurrence sparse-matrix

考虑例如A [14,9,13,4,6,12,11,10]。索引集{1,3,5}{1,4,6}稀疏。 {1,2,5}不稀疏,因为1,2是相邻的。

权重由所有稀疏索引的总和来完成,例如w(1,3,5) = 14 + 13 + 6 = 33

如何为每个k,0 <= k =&lt; 0&lt; = k =&lt; 0&gt;开发W(k)的递归。 n令W(k)为A的前缀A [1..k]的稀疏索引集的最大权重?

如何为动态编程编写伪代码,为所有W(k)计算0 <= k <= n? 谢谢大家。

1 个答案:

答案 0 :(得分:0)

假设A的数组索引是从1开始的。 W被初始化为全零。 W的计算方法如下:

W [I] = MAX(W [I-1],W [I-2] + MAX(0,A [1]));

如果数组A中的元素总是大于零,则不需要max(0,A [i])。