16、标题:篮球比赛
【篮球比赛】篮球(5V5)比赛中,每个球员拥有一个战斗力,每个队伍的所有球员战斗力之和为该队伍的总体战斗力。现有10个球员准备分为两队进行训练赛,教练希望2
个队伍的战斗力差值能够尽可能的小,以达到最佳训练效果。给出10个球员的战斗力,如果你是教练,你该如何分队,才能达到最佳训练效果?请说出该分队方案下的最小
战斗力差值。
输入描述:
10个篮球队员的战斗力(整数,范围[1,10000]),战斗力之间用空格分隔,如:10987654321
不需要考虑异常输入的场景。
输出描述:
最小的战斗力差值,如:1
示例1:
输入
10 9 8 7 6 5 4 3 2 1
输出
1
def basketball(s):
from itertools import combinations
a1 = [int(x) for x in str(s).split(" ")]
a2 = list(combinations(a1, len(a1) // 2)) # 排列组合:C(10, 5)
min_diff = abs(sum(a1) - 2 * sum(a2[0]))
for arr in a2:
if abs(sum(a1) - 2 * sum(arr)) < min_diff:
min_diff = abs(sum(a1) - 2 * sum(arr))
return min_diff
print(basketball("10 9 8 7 6 5 4 3 2 1"))