编号登记:为n位体检者设置体检编号1~n。
体检呼叫:体检项目处空闲时呼叫下一个体检者(编号小的优先),若多个项目同时呼叫,体检者到优先级小的项目处体检。仅考虑常规体检项目,各个项目的优先级及体检时间如表1所示:
项目名称 | B超 | 心电图 | 抽血 | 尿常规 | C14检测 | 胸透 | 一般常规(身高体重血压) |
优先级 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
时间(min) | 12 | 5 | 2 | 2 | 2 | 2 | 1 |
表1
前去体检:各个体检项目之间相互独立,互不影响;病人排队体检和体检完毕到下一科室之间没有时间延迟。
(1)某日下午,仅1个团队4人(分别用编号1,2,3,4表示)参加体检,开始体检后第5分钟,3在检查
(2)定义如下lst(n)函数,生成n人体检队列。若体检人数为4人,则que生成结果如表2所示。
队列索引号 | 体检编号 | 已检测项目 |
0 | 1 | [] |
1 | 2 | [] |
2 | 3 | [] |
3 | 4 | [] |
表2
def lst(n):
que=0
for i in range(n): temp=[i+1,[]] |
que.append(temp)
return que
若加框处语句改为
for i in range(1,n+1): temp=[i,[]] |
(3)用Python程序模拟一个10人团队参加体检的流程。程序运行后,体检完成顺序如图1所示:
图1
Python部分程序如下,请在划线处填入合适的代码。
n=10
head=0
que=lst(n)
tail=10
dis=[[‘B超’,12],[‘心电图’,5],[‘抽血’,2],[‘尿常规’,2],[‘C14检测’,2],[‘胸透’,2],[‘一般常规(身高体重血压)’,1]]
t=[-1]*7 #t记录各个项目当前体检的开始时间
f=[-1]*7 #f记录各个项目当前体检人员编号
def jh(num):
global tail #global定义能够实现在自定义函数中改变公共变量tail
p=head
while p<tail:
if
que[p][1].append(num)
f[num]=que[p][0]
t[num]=time
if len(que[p][1])==7:
temp=que[p]
for i in range(p,tail-1):
que[tail-1]=temp
tail-=1
break
p=p+1
time=0
while tail!=head:
i=0
while i<7
if t[i]==-1:
elif time-t[i]==dis[i][1]:
t[i]=-1
f[i]=-1
i-=1
i+=1
print(“体检完成顺序:”)
for i in range(n-1,-1,-1): #按体检完成顺序输出体检者及其的体检项目顺序
item=que[i][1]
s=“
for j in item:
s+=dis[j][0]+‘→’
print(‘编号%d:%s’%(que[i][0],s[:-1]))
同类型试题
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2