选择题 较难0.4 引用1 组卷37
某对分查找算法的 VB 程序段如下:
n = 0: i = 1: j = 6
Key = Val(Text1.Text)
Do While i <= j
m=(i+j)\2
n=n+1
If Key = d(m) Then Exit Do
If Key < d(m) Then j = m - 1
Else i= m + 1
Loop
If i <= j Then s = m – n
Else s = n
数组 d(1)到 d(6)的值依次为“4,6,9,13,20,25”,输入某个 Key 值后,运行该程序段后,变量 s 结果为 3,则 输入 key 的值不可能是( )
n = 0: i = 1: j = 6
Key = Val(Text1.Text)
Do While i <= j
m=(i+j)\2
n=n+1
If Key = d(m) Then Exit Do
If Key < d(m) Then j = m - 1
Else i= m + 1
Loop
If i <= j Then s = m – n
Else s = n
数组 d(1)到 d(6)的值依次为“4,6,9,13,20,25”,输入某个 Key 值后,运行该程序段后,变量 s 结果为 3,则 输入 key 的值不可能是( )
A.25 | B.20 | C.5 | D.3 |
2020·浙江·一模
类题推荐
某办事处每天都有客户来办理业务,每位客户信息包括客户编号、到达时间、办理业务所需时 长和客户等级(1 代表是 VIP ,0 代表不是 VIP) ,如图 a 所示。已将当天所有客户信息, 按照到达时间的先后顺序存储在文件中。该办事处共有 2 个窗 口,初始时仅开通 1 个窗 口,当 排队人数到达 m 时,增开 1 个窗 口,增开窗 口后,不再关闭。所有客户按照到达时间排成一队办理业务,VIP 客户优先。
(1) 以图 a 为例,若只开 1 个窗口,第 4 个办理业务的客户编号为______________ 。
(2) 实现上述功能的 Python 程序段如下,请在划线处填入合适的代码。
'''从文件中读取客户信息存入 data 中 (到达时间已转换为分钟,如 07:53 转换为 473) ,其 中 data[0]存储第 1 个客户信息,data[0][0] 、data[0][1] 、data[0][2] 、data[0][3]为分别表示第 1 个客户的客户编号、到达时间、办理业务所需时长 (分) 和客户等级,代码略。'''
def mt(x) :
#将分钟转换为时间格式,如 473 转换为 07:53,代码略
def gs(x):
#格式化输出,代码略
t=[[9999,9999],[9999,9999]]#t[0]代表第一个窗口的开始时间和结束时间,t[1]代表第二个窗
口的开始时间和结束时间
m=int(input("请输入 m 的值:"))
n=len(data)
t[0][0]=data[0][1]
t[0][1]=data[0][1]+data[0][2]
print("办理序号","客户编号","开始时间","结束时间","窗口编号")
print(gs(1),gs(data[0][0]),gs(mt(t[0][0])),gs(mt(t[0][1])),gs(0))
full=False #full 为 True 表示 2 个窗口办理业务
waitnum=0
openwin=False #openwin 为 True 表示增开 1 个窗口
i=1;q=1;head=1;tail=1 #第一个人已经在办理业务, 队伍为空
while ①_______ :
while i < n and data [i][1] < min(t[0][1],t[1][1]):
tail+=1
waitnum+=1
tmp=data[tail-1]
j=tail-2
while ②_______ : #根据优先级调整排队次序
data [j+1]=data [j]
j-= 1
data[j+1]=tmp
i+=1
if waitnum==m and not full:
full=True
openwin=True
break
x=0 #办理业务的窗口编号
if openwin or full and t[1][1] < t[0][1]:
x= 1
if openwin==True: #新开一个窗口
t[x][1]= ③________
openwin=False
if waitnum>0:
t[x][0]=t[x][1]
t[x][1]=t[x][1]+data[head][2]
waitnum-= 1
q+=1
print(gs(q),gs(data[head][0]),gs(mt(t[x][0])),gs(mt(t[x][1])),gs(x))
④_______
else:
t[x][0]=data[i][1]
t[x][1]=data[i][1]+data[i][2]
q+=1
print(gs(q),gs(data[i][0]),gs(mt(t[x][0])),gs(mt(t[x][1])),gs(x))
i+=1
head=tail=i
客户 编号 | 到达 时间 | 办理业务所 需时长 (分) | 客户 等级 | ||||
1 | 07:53 | 8 | 0 | ||||
2 | 07:54 | 6 | 0 | ||||
3 | 07:57 | 7 | 0 | ||||
4 | 08:02 | 8 | 1 | ||||
5 | 08:12 | 10 | 1 | ||||
. | . | . | . |
图 a
图b
从文件中读取当天客户信息,根据上述规则,按办理业务顺序输出办理结果,如图 b 所示。(1) 以图 a 为例,若只开 1 个窗口,第 4 个办理业务的客户编号为
(2) 实现上述功能的 Python 程序段如下,请在划线处填入合适的代码。
'''从文件中读取客户信息存入 data 中 (到达时间已转换为分钟,如 07:53 转换为 473) ,其 中 data[0]存储第 1 个客户信息,data[0][0] 、data[0][1] 、data[0][2] 、data[0][3]为分别表示第 1 个客户的客户编号、到达时间、办理业务所需时长 (分) 和客户等级,代码略。'''
def mt(x) :
#将分钟转换为时间格式,如 473 转换为 07:53,代码略
def gs(x):
#格式化输出,代码略
t=[[9999,9999],[9999,9999]]#t[0]代表第一个窗口的开始时间和结束时间,t[1]代表第二个窗
口的开始时间和结束时间
m=int(input("请输入 m 的值:"))
n=len(data)
t[0][0]=data[0][1]
t[0][1]=data[0][1]+data[0][2]
print("办理序号","客户编号","开始时间","结束时间","窗口编号")
print(gs(1),gs(data[0][0]),gs(mt(t[0][0])),gs(mt(t[0][1])),gs(0))
full=False #full 为 True 表示 2 个窗口办理业务
waitnum=0
openwin=False #openwin 为 True 表示增开 1 个窗口
i=1;q=1;head=1;tail=1 #第一个人已经在办理业务, 队伍为空
while ①
while i < n and data [i][1] < min(t[0][1],t[1][1]):
tail+=1
waitnum+=1
tmp=data[tail-1]
j=tail-2
while ②
data [j+1]=data [j]
j-= 1
data[j+1]=tmp
i+=1
if waitnum==m and not full:
full=True
openwin=True
break
x=0 #办理业务的窗口编号
if openwin or full and t[1][1] < t[0][1]:
x= 1
if openwin==True: #新开一个窗口
t[x][1]= ③
openwin=False
if waitnum>0:
t[x][0]=t[x][1]
t[x][1]=t[x][1]+data[head][2]
waitnum-= 1
q+=1
print(gs(q),gs(data[head][0]),gs(mt(t[x][0])),gs(mt(t[x][1])),gs(x))
④
else:
t[x][0]=data[i][1]
t[x][1]=data[i][1]+data[i][2]
q+=1
print(gs(q),gs(data[i][0]),gs(mt(t[x][0])),gs(mt(t[x][1])),gs(x))
i+=1
head=tail=i
组卷网是一个信息分享及获取的平台,不能确保所有知识产权权属清晰,如您发现相关试题侵犯您的合法权益,请联系组卷网