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