问题如下:有300人到招聘会求职,其中软件设计有100人,市场营销80人,财务管理70人,人力资源50人。那么问题是:至少有多少人找到工作才能确保一定有70人找到的工作专业相同?
最差原则在这里,就是让求职业成功的专业尽可能的分散,那么显然,依次每个职业求职成功一人就能达到这个目标。然后如此循环,某单一职业求职成功的人数达到70即触发成功条件了。Python代码如下:
#-*-coding:gbk -*-
a=100 #软件设计人数
b=80 #市场营销人数
c=70 #财务管理人数
d=50 #人力资源管理
less=70 #目标最少相同职业人数(按题意是要达到70人)
succ=0 #已经成功求职人数
aa=0 #每种职业的求职成功人数,任一职业达到70即为完成条件。
bb=0
cc=0
dd=0
while True:
if a>1:
a-=1
aa+=1
succ+=1
if b>1:
b-=1
bb+=1
succ+=1
if c>1:
c-=1
cc+=0
succ+=1
if d>1:
d-=1
dd+=0
succ+=1
if aa>=less or bb>=less or cc>=less or dd>=less:
print('最多求职成功%d人能保证%d人成功求职的专业相同'%(succ,less))
break
代码逻辑很简单,但不了解最差原则的原理的话很难绕过这个弯子。看下运行结果:
I:\test\最差问题>python less.py 最多求职成功258人能保证70人成功求职的专业相同
也就是说,如果招聘成功了258人,那么无论如何,其中一定至少有70人是同一职业的。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/2223.html

