如何在序列中找到给定长度的子序列,使得该子序列的总和为max?

时间:2017-01-22 11:20:20

标签: algorithm math dynamic-programming

前 - : 令序列为= {1,8,2,9}并且子序列的长度= 2,则可以获得的最大和来自子序列{8,9},并且该和是8 + 9 = 17。 我该如何为此编写算法?

1 个答案:

答案 0 :(得分:0)

易。

只需扫描保留两个最高数字的序列即可。伪代码:

Initialize m1 and m2 to lowest possible element (0 or -max int)
for each item in the sequence:
  if item > m1 then
    m2 = m1
    m1 = item

循环输出m2 + m1

之后

这不会考虑小于2个元素的帐户,但您可以轻松添加此边缘情况。

如果您选择任何K而不是2,只需使用K个元素的集合(数组)而不是2个变量。

这是O(n)。