问题如下:有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