在特定条件下将数字列表分配给N组的算法

标签 algorithm

假设我有一个数字列表:

2,2,3,4,4

将数字分成N组(这里以3组为例):

A:2,3 sum:5

B:4   sum:4

C:2,4 sum:6

我想要的是最小化总和最高的组(此处为 6)- 总和最小的组(此处为 4)。

有没有人想出一个算法来实现这个?


另一个例子:

7,7,8,8,8,9,9,10

结果应该是这样的:

A:7,8,8 sum:23

B:7,8,9 sum:24

C:9,10  sum:19

最佳答案

不幸的是,这个问题是 NP 难的。请参阅 multiprocessor scheduling 的引用资料或 bin packing .如果您对这种方法感兴趣,您也许还能找到一些有用的近似算法。

关于在特定条件下将数字列表分配给N组的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/595456/

相关文章:

java - A星算法java实现详解

algorithm - 整数除以 7

algorithm - 给定属性的最大前缀

arrays - 计算 k 分钟后将发生的交换次数的程序

java - 为什么 while 循环打印所有数字而 for 循环不打印?

php - 最小集合覆盖 [PHP]

algorithm - Uva 10364 判断是否可以使用不同长度的木棍来制作正方形

python - 在 3D 空间中插值标量场

algorithm - 在一维数组中查找多个峰值

java - 如何生成通过从 Arraylist 中递归删除所有奇数索引元素创建的序列,以便我们最后只得到 1 个元素?