【发布时间】:2013-11-16 01:13:28
【问题描述】:
我有一个具有正自然值的循环缓冲区,例如
1 5
4 2
11 7
2 9
我们将把它分成两个连续的部分,同时保持这个顺序。本例中的这两部分可能是:
-
(4 1 5)和(2 7 9 2 11), -
(7 9 2 11 4)和(1 5 2), - 等
这个想法是保持顺序并取两个连续的子序列。
现在的问题是对它进行分区,使这些子序列的总和彼此接近,即总和之间的差必须最接近于零。
在这种情况下,我认为解决方案是:(2 7 9 2) 和 (11 4 1 5) 分别为 20 和 21。
如何以最佳方式做到这一点?
【问题讨论】:
-
在计算成本的意义上是最优的还是只是最优解?
-
@arturgrzesiak 计算成本。我们可以使用朴素的方法在二次时间内找到最佳解决方案,对吧? :)
-
应该是线性的 - 见 Dukelings 的帖子
标签: algorithm