gpt4 book ai didi

algorithm - 什么是将元素放入容器并使容器尽可能均匀的良好排序算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:56 25 4
gpt4 key购买 nike

所以我实际上打算用它在 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),这两种方法都提供了快速实现接近(或恰好)理想答案的好方法。对于一组足够小的整数,我想你可以强行计算并明确地说特定答案是最好的(或并列最好的)。做这样的事情有什么建议吗?换句话说,一种以可能变慢(或对于大型问题集完全不可行)为代价保证理想答案的方法。

最佳答案

  1. 计算所有元素的总和。
  2. 计算总和的一半,s
  3. 申请Knapsack problem到目标总和 s 的数字。
  4. 将溶液放入一个容器中,将剩余的元素放入另一个容器中。

关于algorithm - 什么是将元素放入容器并使容器尽可能均匀的良好排序算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12700866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com