1. 苏葳的备忘录首页
  2. 编程

最差原则的Python程序验证

python wxpython boa

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

发表评论

邮箱地址不会被公开。 必填项已用*标注