小编amp*_*234的帖子

最小化组数,其中组元素的总和低于特定值

假设我有10个项目的清单和一个max_sum:

items = [1, 2, 4, 4, 10, 10, 15, 18, 21, 22]
max_sum = 30
Run Code Online (Sandbox Code Playgroud)

我想对中的元素进行分组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]
Run Code Online (Sandbox Code Playgroud)

我认为我的上述方法会奏效,但我想知道是否有更直接/更好的方法。谢谢!

python algorithm optimization

5
推荐指数
1
解决办法
114
查看次数

标签 统计

algorithm ×1

optimization ×1

python ×1