7
公平划分列表中的元素
给定玩家的评分列表,我需要将玩家(即评分)尽可能公平地分为两组。目标是最大程度地减少团队的累积评分之间的差异。我如何将玩家分成团队没有任何限制(一个团队可以有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 + …