小球和盒子的问题

复习初赛的时候,这个问题一直困扰着我......

n个小球,装进m个盒子里。

三个条件:小球是否相同,盒子是否相同,是否允许有空盒子。

这就组合出了共八个问题。

1.小球相同,盒子相同,不允许有空盒子。

这个问题等效成把一个数n拆成m个数,且先拆出的数不小于后拆出的数(避免重复情况)。

设f(n,m)为n拆成m份的方案数。

如果这么拆:x1+x2+x3+...+xm=n (xi>=1)。

当x1=1时,后面的拆法表示成f(n-1,m-1)。

当x1>=2时,式子可以变成(x1-1)+(x2-1)+...+(xm-1)=n-m。

所以后面的拆法表示成f(n-m,m)。

所以f(n,m)=f(n-1,m-1)+f(n-m,m)

2.小球相同,盒子相同,允许有空盒子。

相当于把问题1的xi>=1改成xi>=0。

所以设x'=x+1,把式子变成x'1+x'2+...+x'm=n+m,转化为了问题1。

答案即为f(n+m,m)

3.小球不同,盒子相同,不允许有空盒子。

设球的编号为1,2......n。

设n个不同球,m个相同盒的放法为g(n,m)。

如果第一个球的盒子里只有球1,之后的操作的方案数为g(n-1,m-1)。

如果第一个球的盒子里不只有球1,可以先把1拿出来,剩下的随便放,方案数是g(n-1,m)。

再把1放回去,m个盒子是相同的,所以有m种放法。

加一起就是:g(n,m)=g(n-1,m-1)+m*g(n-1,m)

4.小球不同,盒子相同,允许有空盒子。

我们可以沿用问题3的思路。

假设把所有球都放到一个盒子,两个盒子,三个盒子......m个盒子。

这样就转换为了问题3。

答案即为:g(n,1)+g(n,2)+g(n,3)+...+g(n,m)

5.小球不同,盒子不同,不允许有空盒子。

对问题3中的盒子进行不同排列即可。

答案就是:m!*g(n,m)

6.小球不同,盒子不同,允许有空盒子。

显然随便放啊。

方案数就是mn

7.小球相同,盒子不同,不允许有空盒子。

把长为n的一串小球分成m段。

挡板法:在n-1个空里插入m-1个挡板即可。

方案数:C(n-1,m-1)

8.小球相同,盒子不同,允许有空盒子。

考虑转换为问题7。

往每个盒子里额外放一个小球。

变成了n+m个球,m个盒子的问题7。

方案数:C(n+m-1,m-1)

原文地址:https://www.cnblogs.com/eternhope/p/9778992.html