浙教版(2019)信息技术选考二轮复习系列专题配套练习——数组+算法综合二
|
2份
|
6页
|
479人阅读
|
23人下载
内容正文:
数组+算法综合二
班级 姓名
1.【202212星盟】小明所在的班级共有 20 名男生,要参加学校举办的拔河比赛,赛前根据体重分成 AB 两组进行训练,要求每组 10 人,且每组男生的体重之和尽量接近。小明设计了如下算法:
①初步分组:将所有男生按体重从高到低排序,并以 ABAB…进行初步分组;
②计算体重差:计算每组对应两个男生的体重差;
③交换学生:按体重差从高到低判断是否交换学生。
例如 20 名男生的体重(单位:kg)从高到低为:
95, 93, 93, 90, 90, 90, 84, 83, 83, 78, 77, 75, 74, 69, 64, 61, 61, 60, 56, 55。
小明按照以上算法编写 Python 程序如下,请在划线处填入合适的代码。
def group(student): #初步分组
a=[] ; b=[]
i=0
while i<len(student):
a.append(student[i])
b.append(student[i+1])
①
return a,b
def cal_diff(a,b): #计算体重差并降序排序
d=[]
for i in range(len(a)):
d.append([i,a[i]-b[i]])
for i in range(len(d)-1):
for j in range(0,len(d)-i-1):
if ② :
d[j],d[j+1]=d[j+1],d[j]
return d
def change(d,a,b): #标记是否交换
k=(sum(a)-sum(b))//2
f=[0]*len(d)
ssum=0
for i in range(len(d)):
ssum+=d[i][1]
if ssum>k:
ssum-=d[i][1]
else:
③
if ssum==k:
break
return f
student=[95, 93, 93, 90, 90, 90, 84, 83, 83, 78, 77, 75, 74, 69, 64, 61, 61, 60, 56, 55]
qA,qB=group(student)
print("初步分组后 A 组体重:",qA,"和为:",sum(qA))
print("初步分组后 B 组体重:",qB,"和为:",sum(qB))
diff=cal_diff(qA,qB)
flag=④
for i in range(len(flag)): #交换
if flag[i]==1:
qA[i],qB[i]=qB[i],qA[i]
print("交换后 A 组体重:",qA,"和为:",sum(qA))
print("交换后 B 组体重:",qB,"和为:",sum(qB))
2.【202212金丽衢十二校】某银行在取号机上统计了当天人流的进入时间和预计的业务办理时间并存储在“record.xlsx”文件中,银行营业时间为 8:00-17:00。每个客户进入时会选择能最早轮到办理的窗口去办理业务。现要求根据当天窗口的开放情况,合理安排客户办理,输出各个窗口客户办理情况。
图1为“record.xlsx”文件中的数据(数据未完全显示),其中“进入时间”为字符串类型,“办理时间”为整数类型,例如“08:00-15”表示进入银行时间为08点00分,预计业务办理时间为15分钟;图2中显示添加了“办理结束时间”后的数据;图3中显示当开放20个窗口时各个窗口的客户办理信息(客户编号和窗口编号都从1开始),例如第1号窗口办理的第一个人为编号为1的客户,占用窗口时间为08:00-08:15(数据未完全显示)。
(1)请在划线