试题

试题 试卷

logo

题型:综合题 题类: 难易度:困难

浙南名校联盟2023年10月高三信息技术第一次联考试卷

某工厂将送达的各批次物品按品种打包。小李将各批次物品信息按送达时间顺序合并,得到如图 a-2 所示数据 data。同一个包裹只能装入同一品种任意批次的物品,当某一个品种物品 A 送达使得已送达的该品种物品总重量超过 m 时,则将在该物品之前送达的物品按重量由大到小依次 装入包裹,其余重量不足 m 的品种,按各品种依次装入包裹。编写程序,读取物品合并更新后的信 息,按送达时间顺序打包,输出各包裹中的物品序号,运行结果如图 b 所示。

请回答下列问题:

(1)、送达物品信息合并后如图 a-2 所示,若包裹装入物品重量不能超过 8 千克,则首先打包 完成的包裹中装入品种为 0,各物品的序号依次是
(2)、定义 data_sort(lst)函数。先将数据(如图 a-1 中所示)合并得到 lst 列表(如图 a-1 中所示),函数 data_sort(lst)的功能是对 lst 列表按送达时间升序排列,并对序号进行更新。

def data_sort(lst):

    for i in range(n- 1):

        for j in range(n- 1,i,- 1):

            if lst [j][2]< lst [j- 1][2]:

                lst [j], lst [j- 1]= lst [j- 1], lst [j]

        lst[i][0]=i+1

    return lst

执行上述代码后, (填写:能/不能)正确得到如图 a-2 中的数据。

(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]

    print()

'''

合并后排序得到 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)

举一反三
返回首页

试题篮