n个球放入m个盒子总结
n个球放入m个盒子中,有多少种放法
T1
也就是所有球都是一样的,但是盒子有区别,且不能出现空放的情况。
采用插板法,相当于在n-1个空隙中,插入m个盒子,而由于不能有空盒子,所以n个球的最前边或者最后边一定会放一个盒子,所以相当于n-1和间隙中放入m-1个盒子。
C(n-1,m-1), n>=m
0, n<m
T2
球同,盒不同,允许有空盒
先假设m个盒子中都放好了1个球,即假设共有m+n个球,然后情况变为第一种情况,即n+m个球放入m个盒子中,没有空盒。
C(n+m-1,m-1)
T3第二类斯特林数
球不同,盒相同,无空盒
dp[n][m]=mdp[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
转移方程含义:
dp[n][m]表示将n个球放入m个箱子中(无空箱)的组合数量
对于第n个球,如果前边n-1个球已经放入了m个箱子中(无空箱),则第n个球放入m个箱子中任意一个都可以,即mdp[n-1][m]
如果前边n-1个球放入了m-1个箱子中(存在一个空箱子),那么第n个球必须放到这个空箱子中,即1*dp[n-1][m-1]
T4
球不同,盒相同,允许空盒
属于情况三+附加条件
令1=[1,m],枚举dp[n][i]并求和即可。
即,假设空箱子的数量是m-1到1,求出所有情况然后加和。
T5
球不同,盒不同,无空盒
属于情况三+附加条件
对于盒子求组合(m种不同盒子有m!种组合方式)即可
dp[n][m]*m!
T6
球不同,盒不同,允许空盒
(1)可以理解成情况五+附加条件
(2)由于每种球都有m种选择,所以是n和m相乘,即m^n
T7
球同,盒同,允许空箱
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
转移方程含义:
如果对m个盒子中,各放一个球,那么转移到dp[n-m][m]
如果没有采取该操作(至少有一个盒子没有放一个球,也就是至少有一个空箱,那么这个箱子不能装球,就可以排除掉),那么转移到dp[n][m-1]
T8
球同,盒同,无空箱
只需要求第七种情况中的dp[n-m][m]即可,n>=m
0,n<m
圆排列:
定义:指从n个不同元素中取出m(1≤m≤n)个不同的元素排列成一个环形,既无头也无尾。
两个循环排列相同当且仅当所取元素的个数相同并且元素取法一致,在环上的排列顺序一致。
可以理解成,不分头尾的一种直线排列组合,即123,231,312这三种圆排列是相同的。
计算方法:
圆排列实际是将多种直线排列都视为一致,所以
(1)m个不同元素的直线排列方式,有m!种,则其圆排列有m!/m=(m-1)!种。
(2)从n个不同元素中,选出m个,其圆排列有C(m,n)*(m-1)!=A(m,n)/m种