信息技术来源:宁波“十校”2026届高三3月联考技术试题卷
第 12 题
答案与解析
本题解析
参考答案
A
程序分析
a=[1,2,4,8,9,11,15,18]
for i in range(a[len(a)-1]-a[0],-1,-1):
...数组 a 已按升序排列。range 的起始值为 18-1=17,因此外层循环中的 i 依次取 17、16、……、0。每个 i 对应一轮内层扫描。
tot=1;num=0
for j in range(1,len(a)):
if a[j]-a[num]>=i:
tot+=1
num=j初始 tot=1、num=0,表示先选取 a[0]。之后用 j 从左到右扫描,当 a[j] 与 a[num] 的差不小于 i 时,选取 a[j],令 tot 加 1,并把 num 更新为 j。因此 num 始终记录最近选中元素的下标,tot 记录已选元素个数,i 是相邻两次选中元素之间的最小间隔。
由于数组升序排列,每次选取最早满足间隔要求的元素,能为后续元素保留尽可能大的选择空间,从而得到该间隔下可选的最多元素个数。
if tot>=t:
break一轮扫描结束后,若至少能选出 t 个元素,就结束外层循环。因为 i 从大到小尝试,停止时的 i 是能够选出至少 t 个元素的最大间隔。
最终 i=3,说明 i=4 时尚未满足 tot≥t,而 i=3 时满足。减小间隔不会减少可选的最多元素个数,因此只需比较这两个相邻间隔:
| i | 按程序选中的元素 | tot |
|---|---|---|
| 4 | 1,8,15 | 3 |
| 3 | 1,4,8,11,15,18 | 6 |
要跳过 i=4,必须有 3<t;要在 i=3 停止,必须有 t≤6。故满足条件的是 3<t≤6,选项中的 4、5、6 都可能,3 不可能。若 t=3,程序在 i=8 时就能选出 1、9、18,不会继续执行到 i=3。
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_03_G3_ningboshixiao_q012
