资源简介 链表+算法综合三班级 姓名1.【202303温州二模】某物流公司将物流优先级分成一级到四级,派件费分别为300、200、100、80元/件。每天有n件物品分批进仓,每件包含单号、派送批次、派件费。为实现物流派件优先规则,送货员在仓库中选择派件优先级最高的一件派送,接下来选择剩余部分和新进批次中派件优先级最高的一件派送,每派送一件,新的一批到达仓库。根据要求编写程序计算送货员某天前m件物品的派件费总额。请回答下列问题:(1)由题意可知,观察下图。前4件物品的派件费总额是900元,则前3件物品的派件费总额是_______ 元。(2)定义如下sort(lst)函数,参数lst的每个元素由单号、派送批次、派件费三项构成。函数功能是将lst 中的元素按送派件批次升序排列,函数返回lst。def sort(lst):n=len(lst) ; i=0while ifor j in range(n-2, i-1, -1):if lst[j][1]>lst[j+1][1]: lst[j], lst[j+1]=lst[j+1], lst[j]___________return lst上述程序段,划线处语句正确的是_________(多选,填字母)A.i=i+1 B.i=j C.i=j-1 D.i=j+1(3)上述计算派件费总额的部分 Python 程序如下,请在划线处填入合适的代码。def imitate(lst, m):n=len(lst)for i in range(n):lst[i].append(-1)val=0 ; j=0 ; q={300:[-1,-1], 200:[-1,-1], 100:[-1,-1], 80:[-1,-1]}for i in range(m):while jk=lst[j][2]if q[k][0]==-1:q[k][0]=jelse:lst[q[k][1]][3]=j②______ __j+=1for v in [300,200,100,80]:k=q[v][0]if k!=-1:③______ __q[v][0]=lst[k][3] ; breakreturn val'''读取快递数据,存入列表 task 中。列表的每个元素包含 3 个数据项,分别快递单的单号、派送批次、派件费。读取派送件数,存入m,代码略'''task=sort(task) ; val=imitate(task, m)print(val)2.【202212学军模拟】某工厂有一批货物需要加工,现已知每批货物到达工厂的时间和需要加工的时间,为了提高加工的效率,工厂管理员想到两个加工的方法。①先到先加工:按货物到达的时间顺序依次加工,若第i件货物正在加工,第i+1件货物已经到达工厂,则需等待第i件货物加工完成后,才能开始第i+1件货物的加工;②优先加工“加工时间”最短的货物:在已经到达工厂的货物中,找出“加工时间”最短的货物进行加工,其他货物等其加工完成再加工;已到达工厂的剩余货物按同样的方法加工。工厂管理员想知道按这两种不同的方法对货物进行加工,需要等待的时间分别为多少,以便更好选择方案。◆某件货物的等待时间=该货物开始加工的时间-该货物到达工厂的时间◆总等待时间=所有货物的等待时间之和如某批货物加工时间如下表所示。(1)若上表中货物4需加工的时间改为4,则使用方案①进行加工,加工整批货物的总等待时间为 。(2)按方案进行加工的算法如下,请在划线处填入合适的代码。def FCFS(P,n):wait_time=0 ; finish=P[0][1]for i in range(1,len(P)):if P[i][1]wait_time+=finish-P[i][1]return wait_time(3)按方案②进行加工的算法如下,请在划线处填入合适的代码。其中,为了能快速的找出已到达工厂的所有货物中加工时间最短的货物,本算法使用Python的优先队列类PriorityQueue,该队列类常用的方法 如下:def SJF(P,n):wait_time=cur_time=0q=PriorityQueue() ; i=0while iif q.empty():q.put(P[i]) ; i+=1elif iq.put(P[i]) ; i+=1else:min_p=q.get()②cur_time+=min_p[0]return wait_time(4)主程序如下:if __name__=="__main__":#按货物的到达时间,依次读取n个货物的信息,存入数组P中#其中P[i][0]、P[i][1]分别存储第i个货物的加工时间和到达时间#例如,读取上表5个货物的数据:P=[[10,0],[1,1],[5,2],[1,3],[2,4]],代码略time1=FCFS(P,n)time2=SJF(P,n)print("方案①总等待时间:",time1)print("方案②总等待时间:",time2)3.【202301选考真题】有2组器件共n个,要用一台检测设备检测。每个送检器件信息包含送达时间、检测时长和优先级。优先级有m(l编写程序模拟检测过程,先合并2组器件的数据,然后计算所有器件的平均等待时长,其中每个器件等待时长为其开始检测的时间与送达时间的时间差。(时间单位均为秒)请回答下列问题:(1) 由题意可知,图中器件A、B、C、D的检测顺序为A-C-D-B,A、C、D的等待时长分别为0、l、0,B的等待时长是__________。(2)定义如下merge(1stl,lst2)函数,参数lstl和lst2的每个元素由送达时间、检测时长和优先级3项构成,1stl和lst2均已按送达时间升序排列。函数功能是将lst2中的元素合并到1stl中,并将1stl按送达时间升序排列,函数返回lstl。def merge(lst1,lst2):i=len(lst1)-1j=len(lst2)-1for t in range(len(lst2)):lst1.append([0,0,0]) #为1stl追加一个元素[0,0,0]k=len(lst1)-1while j>=0:if i>=0 and lst1[i][0]>lst2[j][0]:lst1[k]=lst1[i]i-=1else:lst1[k]=lst2[j]j-=lk-=1return lst1①调用merge(1stl,lst2)函数,若lstl为[[0,3,2],[1,1,2],[12,2,2]],1st2为[[2,l,1],[4,3,0],[1l,3,2]],则while语句中循环体的执行次数是___________。②若函数中while语句的条件“j>=0”误写为“k>=0”,会导致某些情况下无法得到符合函数功能的结果。调用merge(lstl,lst2)函数,下列4组数据中能测试出这一问题的是_________(单选,填字母)。A.lstl=[[0,3,2],[4,3,0]] B.lstl=[[1,1,2]]lst2=[[1,1,2]] lst2=[[0,3,2],[4,3,0]]C.lst1=[[l,1,2],[4,3,0]] D.lstl=[[4,3,0]]lst2=[[0,3,2]] lst2=[[0,3,2],[l,1,2]](3)实现模拟检测过程并计算平均等待时长的部分Python程序如下,请在划线处填入合适的代码。def proc(data,m):n=len(data)queinfo=[]for i in range(m):queinfo.append([-1,-1]) #queinfo追加一个元素[-1,-1]for i in range(n):data[i].append(-1) #data]追加一个元素-1curtime=0waitnum=0i=0①_______ __while i0:if ik=data[i][2]if queinfo[k][0]==-1:queinfo[k][0]=ielse:②___________data[p][3]=iqueinfo[k][1]=iwaitnum+=1i+=1elif waitnum>0:k=0while queinfo[k][0]==-1:k+=1p=queinfo[k][0]total+=curtime-data[p][0]curtime+=data[p][1]③_________waitnum-=1else:curtime=data[i][0]return total/n'''读取2组器件的数据,分别存入列表data1和data2中。2个列表的每个元素包含3个数据项,分别对应器件的送达时间、检测时长和优先级。data1和data2中的数据已分别按送达时间升序排列,代码略读取优先级等级个数存入m,代码略'''data=merge(data1,data2)print(proc(data,m))链表+算法综合三班级 姓名1.【202303温州二模】(1)600(2)AD(3)①lst[j][1]==i+1②q[k][1]=j③val+=v 或 val+=lst[k][2]2.【202212学军模拟】(1)47(2)finish+=P[i-1][0](3)①P[i][1]<=cur_time②wait_time+=cur_time-min_p[1]3.【202301选考真题】(1)6 或 6秒(2)①4②A(3)①total=0②p=queinfo[k][1]③queinfo[k][0]=data[p][3] 展开更多...... 收起↑ 资源列表 浙教版新教材(2019)信息技术选考二轮复习系列专题配套练习——链表+算法综合三.doc 浙教版新教材(2019)信息技术选考二轮复习系列专题配套练习——链表+算法综合三答案.doc