所以我实际上会在ExtJS4中使用它来做一些动态表单布局生成,但我认为我可以简化问题,以便在不丢失任何内容的情况下进行讨论:
假设我有一个整数列表,我想放在两个容器中。当我完成后,我希望两个容器“尽可能”,在这种情况下,每个容器内的整数总和就像我们可以得到的那样彼此接近。在这种情况下,每个容器中有多少个整数结束并不重要,只是它们的总和很接近。
以下是可能的输入和理想输出的示例:
Integers: [1,7,13,3,6,8]
Container A: [13,6] (sum 19)
Container B: [1,7,3,8] (sum 19)
一种天真的方法可能是迭代整数列表一次,并将每个整数放在当前具有较小总和的容器中:
Integers: [1,7,13,3,6,8]
Container A: [1,13,8] (sum 22)
Container B: [7,3,6] (sum 16)
你们建议采用什么算法/方法来解决这个问题?我想有很多潜在的。如果您发现在代码示例中更容易思考,我将在javascript中实现最终产品。
谢谢!
修改
我喜欢到目前为止提出的两种方法(感谢cheeken和sumudu fernando),这两种方法都提供了很好的方法来快速实现接近(或完全)理想答案的方法。对于一组足够小的整数,我想你可以强制计算并明确地说特定答案是最好的(或者最好的并列)。做这样的事情的任何建议?换句话说,这种方法可以保证一个理想的答案,代价是可能很慢(或者对于大型问题集是完全不可行的)。
答案 0 :(得分:1)
s
。s
的数字。