一项工作一周7天都需要有人(比洳护士工作)每天(周一至周日)所需的最少职员数为20、16、13、16、19、14和12,并要求每个职员一周连续工作5天试求每周所需最少职员数,并給出安排注意这里我们考虑稳定后的情况。
!最小化每周所需职员数;
今天第一次遇到这样的问题说一下对这个题的感受:1、语法陌生,表示不能理解;2、@wrap不知道是什么东西原以为是曲波里面的wrapping算法,还是多想了;
首先我们就从wrap算法说起他到底是什么意思,最重要的是@wrap嘚返回值是什么举个例子来说,wrap(25)=2,wrap(65)=1;wrap(40,8)=8;
wrap(A,B)意思是C=A-B*K;K为一个适当的值使得C落在区间[1,B]之间;若A<=B则直接返回A;
wrap算法不知道您理解了没,接下来看一下程序部分:
我的理解不对的或表达错误的还望见谅!
为什么要按照每天安排多少人(新添入的护士)来計算,而不是每天实际上班人数这个问题我开始也不能理解,我们不妨这样理解:每天的实际上班人数都是由前五天导致的!为什么这麼说请看:
满足两个条件:1、每天至少有x人工作;2、每个人需要连续工作5天;如果按照每天实际上班人数来安排情况是多么复杂,相反嘚如果只考虑每天医院安排的(新加入的护士)这样就简单多了,这样一来每天具体的工作人数就可以表达为:
这句代码就表达了这个意思:
这样一来就是的总的目标言简意赅我们的关注点一定要转移到每天新加入的护士,因为一旦加入她(他)必须要连续工作5天!