选手积分
提交数: 168, 通过率: 41.07%, 平均分: 42.74
题目描述:
学校举行投篮比赛,共有n名选手参加 (n为偶数,选手编号为1~n) ,比赛分r轮进行。 比赛积分规则为:每轮比赛中,两名选手为一组进行对阵,进球数多的选手获胜,获胜一方积分加1; 选手积分随着比赛轮次的进行而累加。
第一轮比赛按选手编号顺序,两人一组进行比赛,即1号与2号一组,3号与4号一组,以此类推。每轮比赛结束后,按照选手已获积分从高到低进行排名,若积分相同,则编号较小的选手排名靠前。此后每轮比赛均按选手排名进行分组,如第1名和第2名一组、第3名和第4名一组,以此类推。
编写程序,读取每轮比赛选手的进球数,统计各轮比赛后选手的积分。
若现有4名选手进行比赛, 初始积分均为0,过程如下图所示。
输入格式:
4 4
8 9 9 17
5 15 9 11
7 19 12 6
8 20 14 16
输出格式:
[[2, 1], [4, 1], [1, 0], [3, 0]]
[[4, 2], [2, 1], [3, 1], [1, 0]]
[[2, 2], [3, 2], [4, 2], [1, 0]]
[[3, 3], [2, 2], [4, 2], [1, 1]]
提示:
请完善下列程序:
def merge(a,b):
n=len(a); m=len(b)
c=[-1]*(n+m)
i,j=0,0
for k in range(n+ m):
if i<n and j<m:
if _______________________ : #填空1
c[k]=a[i]
i=i+1
else :
c[k]=b[j]
j=j+1
elif ______________ : #填空2
c[k]=a[i]
i=i+1
else:
c[k]=b[j]
j=j+1
return c
d=[]
#输入选手人数n和比赛轮数r
n,r = map(int, input().split())
for i in range(n):
d.append([i +1,0])#为 d 追加一个元素[i+1,0]
for i in range(r):
# 读取本轮比赛各组选手的进球数, 存入列表 score[0]~score[n-1]
#score[0]和 score[1]存储第一组两名选手的进球数……
score=list(map(int,input().split()))
d1 =[];d2 =[]
for j in range(_____________): #填空3
if score[j]> score[j+1]:
________________ #填空4
d1. append(d[j])
d2. append(d[j+1])
else:
d[j+1][1]=d[j+1][1]+1
d1. append(d[j+ 1])
d2. append(d[j])
d= ______________ #填空5
#输出本轮各选手的积分,代码略
print(d)
时间限制: 1000ms空间限制: 256MB
来源: 2024.1台州高二期末卷