n个球放入m个箱子里

转载:https://blog.csdn.net/u012720552/article/details/80961684

1.球同,盒不同,无空箱

C(n-1,m-1), n>=m
0 n< m

2.球同,盒不同,允许空箱

C(n+m-1,m-1)

3.球不同,盒相同,无空箱

第二类斯特林数dp[n][m]
dp[n][m]=m*dp[n-1][m]+dp[n-1][m-1],1<=m < n
dp[k][k]=1,k>=0
dp[k][0]=0,k>=1
0,n < m

4.球不同,盒相同,允许空箱

sigma dp[n][i],0<=i<=m,dp[n][m]为情况3的第二类斯特林数

这种情况就是在第3种情况的前提下,去枚举使用的箱子的个数

5.球不同,盒不同,无空箱

dp[n][m]*fact[m],dp[n][m]为情况3的第二类斯特林数,fact[m]为m的阶乘

6.球不同,盒不同,允许空箱

power(m,n)

7.球同,盒同,允许空箱

dp[n][m]=dp[n][m-1]+dp[n-m][m], n>=m
dp[n][m]=dp[n][m-1], n < m
边界dp[k][1]=1,dp[1][k]=1,dp[0][k]=1

8.球同,盒同,无空箱

dp[n-m][m],dp同第7种情况,n>=m
0, n< m

你可能感兴趣的:(算法模板)