n颗相同的糖果,分给m个人,每人至少一颗,问有多少种分法。给定n和m,请返回方案数,保证n小于等于12,且m小于等于n。
糖都是一样的,所以可以简化为插板问题,n个糖n-1个空,插m-1个板子,将糖分为m堆即可。C M-1 N-1
class Distribution {
public:
int getWays(int n, int m) {
// write code here
int i,p1=1,p2=1;
for(i=1;i<m;i++){
p1*=i;
p2*=(n-1);
n--;
}
return p2/p1;
}
};