在一定条件下为N组分配数字列表的算法

Bil*_*lly 2 algorithm

假设我有一个数字列表:

2,2,3,4,4
Run Code Online (Sandbox Code Playgroud)

将数字拆分为N组(此处以3组为例):

A:2,3 sum:5

B:4   sum:4

C:2,4 sum:6
Run Code Online (Sandbox Code Playgroud)

我想要的是最小化具有最高总和的组(这里是6) - 具有最小总和的组(这里是4).

有没有人想到一个算法来实现这一目标?


另一个例子:

7,7,8,8,8,9,9,10
Run Code Online (Sandbox Code Playgroud)

结果应如下:

A:7,8,8 sum:23

B:7,8,9 sum:24

C:9,10  sum:19
Run Code Online (Sandbox Code Playgroud)

zwe*_*nde 5

不幸的是,这个问题很难.请参阅多处理器调度bin打包的参考.如果您对该方法感兴趣,您也可以找到一些有用的近似算法.