Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将浮动列表分为两组进行优化,以使每组总和之间的差异最小化?_Python_Algorithm_Sorting - Fatal编程技术网

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)?你能对如何解决这个问题多加评论吗?