4
比方说,我有10个项目列表和max_sum数:最小化组,其中族元素的总和低于一定值
items = [1, 2, 4, 4, 10, 10, 15, 18, 21, 22]
max_sum = 30
我想组items
的元素,我想找到最小组数,前提是每组中的元素总和小于预设值max_sum
,其中items
的所有元素均小于max_sum
。
的算法总体思路:
- 初始化1)空单
new_group
,2)浮动space_left
组=(max_sum - sum(new_group))
- 找到最大的项目,这样的项目< = space_left
- 最大的项目追加到
new_group
- 更新
space_left
- 删除项目从
items
- 一次
min(items)
>space_left
,重新来过 - 计数周期找到组
的最低数量,以便为值给出,该算法将产生4组:
[22, 4, 4]
[21, 2, 1]
[18, 10]
[15, 10]
我想我的上述方法将工作,但我想知道是否有一个更直接/更好的方法。谢谢!
您应该查看https://www.wikiwand.com/en/Bin_packing_problem,这是您确切的问题,并且已经在这方面进行了大量研究。 – Robbie