给定未知长度的未知整数数组,其值也未知,如何将它们组织成三列,以便最左边的组的总和最大,中间的第二大和第三是最小的,群体的大小尽可能接近。
此处的实际目标是将<ul>
元素的大小(它们包含的<li>
元素的数量)组织成三列。我正在寻找javascript中的答案,但是如果有人能够简单地解释逻辑就足够了:)
换句话说,给定一个数组,如......
var set = [1, 1, 4, 6, 7, 10, 3, 6]
将被组织为......
var left = [10, 4]
var middle = [6, 7]
var right = [3, 6, 1, 1]
还有其他可能性。第一列总和为14,但这可能是[6, 4, 3, 1]
等各种组合的结果。以这种方式组织会使得很难为下一列获得正确的值,因此最好使用之前的最大数字,如上例所示。 * 的
我确信之前已经被问过并回答过,但我不知道如何查看。我做了一些研究,发现这几乎是Partitioning Problem,虽然我仍然不知道如何做到这一点,或者这里有一个简单的可行答案。任何适合我给出的简单例子的东西都应该足够了。
* 编辑:第二个想法,这可能是一个不正确的假设。