题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
作为篮球队教练,你需要从以下名单中选出 11 号位至 55 号位各一名球员,组成球队的首发阵容。
每位球员担任 11 号位至 55 号位时的评分如下表所示。请你计算首发阵容 11 号位至 55 号位的评分之和最大可能是多少?
运行限制
最大运行时间:1s
最大运行内存: 128M
解题思路
1 暴力法:
import os
import sys
# 请在此输入您的代码
s1 = [97,92, 0, 0,89,82, 0, 0, 0,95, 0, 0,94, 0, 0, 0,98,93, 0, 0]
s2 = [90,85, 0, 0,83,86, 0,97, 0,99, 0, 0,91,83, 0, 0,83,87, 0,99]
s3 = [ 0,96, 0, 0,97, 0, 0,96,89, 0,96, 0, 0,87,98, 0,99,92, 0,96]
s4 = [ 0, 0, 0,80, 0, 0,87, 0, 0, 0,97,93, 0, 0,97,93,98,96,89,95]
s5 = [ 0, 0,93,86, 0, 0,90, 0, 0, 0, 0,98, 0, 0,98,86,81,98,92,81]
li = []
for a in range(20):
for b in range(20):
for c in range(20):
for d in range(20):
for e in range(20):
if len(set([a,b,c,d,e])) == 5:
li.append(s1[a]+s2[b]+s3[c]+s4[d]+s5[e])
print(max(li))
看到大佬发布的题解中出现了这个,那我心里平衡了…
2 调库
3 不超时的方法
import os
import sys
# 请在此输入您的代码
a = [[97,90,0,0,0],[92,85,96,0,0],[0,0,0,0,93],[0,0,0,80,86],[89,83,97,0,0],
[82,86,0,0,0],[0,0,0,87,90],[0,97,96,0,0],[0,0,89,0,0],[95,99,0,0,0],
[0,0,96,97,0],[0,0,0,93,98],[94,91,0,0,0],[0,83,87,0,0],[0,0,98,97,98],
[0,0,0,93,86],[98,83,99,98,81],[93,87,92,96,98],[0,0,0,89,92],[0,99,96,95,81]]
x = [0,0,0,0,0]
tm = [100,101,102,103,104]
for j in range(5):
b = [i[j] for i in a]
x[j] = max(b)
tm[j] = b.index(max(b))
while True:
set_list = set(tm)
if len(set_list) == len(tm):
break
else:
z = b.index(max(b))
b[z] = 0
x[j] = max(b)
tm[j] = b.index(max(b))
print(sum(x))
查完set()函数,我直呼,真的太巧妙了!!!!!!!!!