序号 | 品种 | 送达时间 | 批次 | 重量(千克) | 序号 | 品种 | 送达时间 | 批次 | 重量(千克) | |
1 | 2 | 8:35 | 1 | 6 | 1 | 0 | 8:30 | 2 | 3 | |
2 | 1 | 8:50 | 1 | 8 | 2 | 2 | 8:35 | 1 | 6 | |
3 | 0 | 9:10 | 1 | 2 | 3 | 0 | 8:40 | 3 | 4 | |
4 | 0 | 9:15 | 1 | 4 | 4 | 1 | 8:50 | 1 | 8 | |
5 | 0 | 9:10 | 1 | 2 | ||||||
序号 | 品种 | 送达时间 | 批次 | 重量(千克) | 6 | 0 | 9:15 | 1 | 4 | |
1 | 0 | 8:30 | 2 | 3 | 图a-2 | |||||
序号 | 品种 | 送达时间 | 批次 | 重量(千克) | ||||||
1 | 0 | 8:40 | 3 | 4 |
图a-1
m=10 data=[1,0,’8:30’,2,3],[2,2,’8:35’,1,6],[3,0,’8:40’,3,4], [4,1,’8:50’,1,8],[5,0,’9:10’,1,2],[6,0,’9:15’,1,4] 第1个包裹中品种为0,各物品的序号依次是:3,1,5, 第2个包裹中品种为0,各物品的序号依次是:6, 第3个包裹中品种为1,各物品的序号依次是:4, 第4个包裹中品种为2,各物品的序号依次是:2, |
图b
请回答下列问题:
(1)送达物品信息合并后如图a-2所示,若包裹装入物品重量不能超过8千克,则首先打包完成的包裹中装入品种为0,各物品的序号依次是
(2)定义data_sort(lst)函数。先将数据(如图a-1中所示)合并得到1st列表(如图a-1中所示),函数data_sort(lst)的功能是对1st列表按送达时间升序排列,并对序号进行更新。
def data_sort(1st):
for i in range(n-1):
for j in range(n-1,i,-1):
if 1st[j][2]<1st[j-1][2]:
1st[j],1st[j-1]=1st[j-1],1st[j]
1st[i][0]=i+1
return 1st
执行上述代码后,
(3)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
def pack(k):#对品种k已送达待打包的物品按重量由大到小输出
#部分代码略
p=b[k][1]
num+=1
print(″第″+str(num)+″个包裹中品种为″+str(k)+″,各物品的序号依次是:″,end=″ ″)
while p!=-1:
print(data[p][0],end=″,″)
p=x[p]
″″
合并后排序得到n件物品的数据存储在数组data中并输出,包裹最大承受最大重量为m千克。物品品种的数量是sn,代码略
″″
b=[0,-1] for i in range(sn)]
x=[-1 for i in range(n)]
num=0
for i in range(n):
k=data[i][1]
if b[k][0]+data[i][4]>m:
pack(k)
b[k]=[0,-1]
p=
if p==-1:
b[k][1]=i
else:
if data[i][4]>data[p][4]:
b[k][1]=i
else:
q=-1
while
q=p
p=x[p]
x[q]=i
x[i]=p
b[k][0]+=data[i][4]
#重量不足m的品种,按各品种依次装入包裹
for i in range(sn):
if b[i][1]!=-1:
pack(i)
同类型试题
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2