小编Edd*_*eEC的帖子

列表元素的公平分区

给定一个球员评分列表,我需要尽可能公平地将球员(即评分)分成两组。目标是最小化团队累积评分之间的差异。我如何将球员分成几队没有限制(一支球队可以有 2 名球员,另一支球队可以有 10 名球员)。

例如:[5, 6, 2, 10, 2, 3, 4]应该返回([6, 5, 3, 2], [10, 4, 2])

我想知道解决这个问题的算法。请注意,我正在参加在线编程入门课程,因此将不胜感激简单的算法。

我正在使用以下代码,但由于某种原因,在线代码检查器说它不正确。

def partition(ratings):
    set1 = []
    set2 =[]
    sum_1 = 0
    sum_2 = 0
    for n in sorted(ratings, reverse=True):
        if sum_1 < sum_2:
            set1.append(n)
            sum_1 = sum_1 + n
        else:
            set2.append(n)
            sum_2 = sum_2 + n
    return(set1, set2)
Run Code Online (Sandbox Code Playgroud)

更新:我联系了导师,被告知我应该在函数中定义另一个“帮助”函数来检查所有不同的组合,然后我需要检查最小差异。

python algorithm list

12
推荐指数
1
解决办法
926
查看次数

标签 统计

algorithm ×1

list ×1

python ×1