Python 如何将浮动列表分为两组进行优化,以使每组总和之间的差异最小化?
假设我有一个表单的浮动列表:Python 如何将浮动列表分为两组进行优化,以使每组总和之间的差异最小化?,python,algorithm,sorting,Python,Algorithm,Sorting,假设我有一个表单的浮动列表: list = [a, b, c, d, e, f, ...] 我想将元素分为两个列表(列表_1和列表_2),以使每个列表的总和之间的差异最小化。我主要是想找出哪两个排列的大小最接近 编辑:我所说的“大小”是指两个子列表中每一个子列表的总和(k是多少个子列表) 这个代码应该可以工作 from typing import List def partition(A: List[int], k:int) -> List[List[int]]: result
list = [a, b, c, d, e, f, ...]
我想将元素分为两个列表(列表_1和列表_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]]
.要找出最小的差异是O(2^N)?你能对如何解决这个问题多加评论吗?