python - 如何将浮点数列表分为两组进行优化,以使每组总和之间的差异最小化?
问题描述
假设我有一个表单的浮动列表:
list = [a, b, c, d, e, f, ...]
我想将元素分类到两个列表(list_1 和 list_2)中,以使每个列表之和之间的差异最小化。我本质上是在尝试找出哪两个排列的大小彼此最接近。
编辑:“大小”是指两个子列表中的每一个的总和
解决方案
我很想试试这个:(k是多少子列表)这段代码应该可以工作。
from typing import List
def partition(A: List[int], k:int) -> List[List[int]]:
result = [[] for _ in range(k)]
sums = [0] * k
for x in sorted(A, reverse=True):
i = sums.index(min(sums))
sums[i] += x
result[i].append(x)
return result
print(partition([2.5, 7.2, 4.3, 9.1, 12.4, 10.5, 8.6], 2))
Output:
[[12.4, 8.6, 4.3, 2.5], [10.5, 9.1, 7.2]]
推荐阅读
- javascript - 在javascript中找出函数的父级
- ubuntu - 仅针对特定请求在 Ubuntu 服务器上设置 VPN 的最佳方式
- reactjs - React + Typescript:使用具有可选泛型类型的函数的道具正确键入通用组件
- android - 使用jetpack compose时android studio gradle脚本中compileSdk和compileSdkVersion有什么区别
- elasticsearch - 最新 N 条记录上的 Elasticsearch 聚合
- php - 在 laravel 中动态确定 http/https
- reactjs - 在 reactJS 中从 IndexedDB 获取视频 URL
- rust - 创建递归枚举——我应该使用生命周期引用吗?(锈)
- python - Visual Studio Code 调试器不工作
- python - 我将如何正确实现异步任务?