接上文“2009年9月刊《程序员》算法题之我见——思索之一”
问题六:M=15,N=2,P=S,求方案总数
按照上一篇文章的分析,相邻两排实习生安排如果符合要求的就一定能压缩到一排里。也就是说,不能压缩到一排里的就一定是不符合要求的安排。
每排S人,则两排一共是S+S人。因此,现计算出M=15,N=1,P=2S,的方案总数。对每一个安排来说,一拆二,S人作为第一排的安排,S人作为第二排的安排。则有C(S,2S)种
综上所述,问题六的解答为
SUM=F(15,2S)×C(S,2S)
当S大于4时,比方说5,F(15,10)=0,安排总数为0
问题七:M=15,N=2,P1=S1,P2=S2,求方案总数
这是问题六的扩展,很容易能推导出来
SUM=F(15,S1+S2)×C(S1,S1+S2)
其中函数F和函数C的说明在上一文已说明,这里不再赘述了。
能不能推导出三行及以上的情况,还不能确定。待研究后再与各位交流。
本系列文章目录