【问题标题】:How to find the lowest value possible of a serie of ints?如何找到一系列整数的最低值?
【发布时间】:2012-01-04 09:01:29
【问题描述】:

我有一个像这样的整数序列(正数和负数):

12,-54,32,1,-2,-4,-8,12,56,-22,-21,4,17,35

并且我需要找到可能采用该序列的任何子序列(当然还有该子序列的开始索引和结束索引)的最差结果(较小的值总和)。

有没有一种方法不是 2^n(一个一个地计算所有可能的序列)?

例如,使用这个简单的序列:

1,2,-3,4,-6,4,-10,3,-2

较小的值总和将是子序列:

-6,4,-10 (with start index 4 and end index 6)

【问题讨论】:

  • 结果是指对子序列中的值求和?
  • @Howard:是的,谢谢你的提示。我会编辑。
  • 在你的例子中最糟糕的结果是什么? -22, -21?
  • @fge:我将编辑问题以使其更清晰
  • 计算所有可能的子序列是O(n^2)而不是O(n^n)

标签: algorithm integer sequence sequences


【解决方案1】:

通过改变每个项目的符号,可以将找到最小值的问题转化为最大值搜索。

对于最大子序列,存在众所周知的算法,请参见例如here.

您可以转换您的列表并应用所述算法或稍微修改算法本身(最小而不是最大或减而不是加)以使用您的原始列表。

【讨论】:

    猜你喜欢
    • 2018-08-18
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 2021-04-04
    • 1970-01-01
    • 2013-09-28
    相关资源
    最近更新 更多