15.有n位员工申请m个培训项目。每位员工对项目有志愿顺序;每个项目对员工进行匹
配度评估得到具体分值,分值均不相同。每个项目最多录取cp位员工,项目可以不满
员,员工也可以不被录取
培训项目录取规则如下:依次处理每位员工,依照其志愿顺序尝试录取。若当前志
愿的项目未招满,则拟录取该员工。若已招满,则当前员工与该项目拟录取员工中匹配
度最低者进行比较:①若当前员工匹配度更高,则拟录取该员工,匹配度最低者被淘汰
并等待下次处理;②若当前员工匹配度更低,则对当前员工的下一志愿项目尝试录取.
直到所有员工都已被拟录取或者未被拟录取员工所有志愿均已尝试,录取过程结束。
例如,有3位员工(用大写字母表示)和3个项目(用正整数表示),每个项目最
多录取2位员工。各员工的志愿顺序如第15题图a所示,各项目的员工匹配度如第15
题图b所示。录取过程如下:员工A被项目3拟录取→员工B被项目3拟录取→员工C
被项目3拟录取(员工B被淘汰)→员工B被项目1拟录取。录取结束,结果为:项目
1录取B,项目2没有录取员工,项目3录取A和C.
员工编号
员工编号
志愿顺序
项目编号
A
B
C
A
项目3,项目2,项目1
1
71
82
93
B
项目3,项目1,项目2
2
88
96
90
C
项目3,项目1,项目2
3
78
69
89
第15题图a
第15题图b
请回答下列问题:
(1)若员工B的志愿顺序修改为“项目2,项目1,项目3”,按上述规则进行录取,则
员工B的录取结果是▲(单选,填字母:A.被项目1录取/B.被项目2录取/
C.未被录取)。
(2)定义如下sel(a,s,st0函数,参数a表示某项目已拟录取的员工,参数s表示该项目
的员工匹配度,参数sf表示当前待录取员工。员工编号“A”~“Z”用0~25表示.
def sel(a,s,stf):
idx =0
for j in range(1,len(a)):
if s[a[j]]idx=j
if s[a[idx]]return idx
else:
return -1
调用sel函数,若a值为[2,31,s值为[90,80,85,70],stf值为1,则函数返回的结
果为▲一。(单选,填字母:A.-1/B.0/C.1/D.2)
技术·第5页(共11页)