充值活动已开启,快来参与吧 关闭充值活动
试题
  • 试卷
  • 试题
学段: 学科:
上传图片
或拖拽图片,或截图后Ctrl + V上传图片
图片上传失败(原因:图片不够清晰或未拍摄完整)
(图片大小不超过10M)
今日剩余可使用:0
搜索
清空
当前位置: 高中信息技术 / 算法与程序设计 / 算法及程序语言基础 / 常见数据类型、数组
  • 1. 某工厂有n条生产线可加工a、b两类产品。为获取更大利润,需制定合适的生产线分配方案。要求:同一生产线上的订单时间不能重叠(需在前一订单完成后启动下一订单);a类和b类生产线至少各分配1条。产品加工规格:每个a类产品加工时长5个时间单位,收益10元;每个b类产品加工时长7个时间单位,收益15元。订单表示方法:每个订单表示为[产品类型,到达时间,产品数量]。例如:["a",15,10]表示a类产品订单,到达时间15,数量10。若订单到达时没有空闲生产线,则该订单转给其他公司处理。

    设n为4,订单任务为task=[["a",0,10],["b",0,20],["a",20,30],["b",50,10],["a",30,20],["b",100,5],["b",200,30],["a",100,10],["b",300,10]],最佳分配方案:2条生产线加工a产品,2条生产线加工b产品。最大收益是:1550元。

    请回答下列问题:

    (1)若有3条生产线,订单 task=[["a",0,30],["b",0,20],["a",20,20],["b",50,10],["a",30,10]],则最佳分配方案中,a类产品分配生产线数量条。

    (2)定义如下sort(que)函数,参数que列表的每个元素由产品类型、到达时间、产品数量3项组成。函数的功能是根据产品到达时间进行升序排序。

    def sort(que):

           for i in range(1, len(que)):

                  t= que[i]

                  j=i-1

                  while j>=0 and t[1]< que[j][1]:

                        

                        

                  que[j+1]=t

    若que列表为[["a",10,10],["a",0,20],["a",50,30],["a",30,10]],则加框处代码执行次数是次。

    (3)实现生产线分配方案的部分Python程序如下,请在划线处填入合适的代码。

    def check(s,e,j):

           money=0

           if task[j][0]=="a":

                  time=5

                  m=10

           else:

                  time=7

                  m=15

           for i in range(s, e+1):

                  if top[i]==-1 or task[st[i][top[i]]][1]+ time* task[st[i][top[i]]][2]<= task[j][1]:

                        top[i]+=1

                        st[i]. append(j)

                        

                        break

           return money

    #生产线总数存入变量n,订单任务存入task列表,代码略

    maxans=0

    sort(task)

    for a_lines in range(1, n):

           st=[[] for i in range(n)]

           top=[-1]*n

           ans=0

           for j in range(len(task)):

                  if task[j][0]=="a":

                        ans+= check(0,a_lines-1,j)

                  elif task[j][0]=="b":

                        

           if ans> maxans:

                  maxans= ans

                 

    print("最佳分配方案:", best_allocation, "条生产线加工a产品, ",n-best_allocation, "条生产线加工b产品,最大收益是:", maxans, "元。“)

基础巩固 换一批