题库首页 › GESP等级认证(Python) › 题目 25922

小杨在学校义卖会上负责打包“零食盲盒”。每个盲盒重量不同,快递盒最多承重 limit 克,每个快递盒最多装两个盲盒。为了尽量少用快递盒,他采用如下策略: (1)每次把最轻的盲盒和最重的盲盒尝试放在一起; (2)如果两者重量之和不超过 limit ,就一起装; (3)否则,只能让最重的盲盒单独装一盒。 下面代码用于计算最少需要多少个快递盒,则横线处应填入的是( )。def minBoxes(w, limit): w.sort() l = 0 r = len(w) - 1 boxes = 0 while l <= r: if w[l] + w[r] <= limit: # ------------- # 在此处填入代码 else: r -= 1 boxes += 1 return boxes

A:l += 1
B:r -= 1
C:l += 1 r -= 1
D:boxes -= 1

正确答案:C

答案解析

将盲盒重量排序后,使用双指针法:左指针指向最轻盲盒,右指针指向最重盲盒。每次尝试将两者组合装入快递盒。若重量之和不超过承重限制,则两盲盒同装一盒,左右指针同时向中间移动;否则,仅最重盲盒单独装盒,右指针左移。每轮操作均计一次快递盒使用。循环继续条件为左指针小于等于右指针。过程中需维护盒子计数,并根据组合策略更新指针位置。

试卷来源:202606 CCF-GESP编程能力等级认证Python五级真题

本卷相关题目

在线做题 同科目题库