- 在牛客上遇见这道题, 需要计算C(m,n),就是概率论中的:在m个数中取n个,一共有几种情况 ,看到参考答案,有必要记录一下
long long c[105][105];
const int mod = 1000000007;
void init()
{
c[0][0]=1;
for(int i=1;i<=100;i++){
c[i][0]=1;
for(int j=1;j<=100;j++){
c[i][j] = (c[i-1][j-1]+c[i-1][j])%mod;
}
}
}
- 利用数学归纳法:
C(n,k) = C(n-1,k) + C(n-1,k-1);
- 这个公式应用于这里例子的意思是:
- C(n-1,k): 不包括第k中可能,在n-1中取k个的可能
- C(n-1,k-1): 包括第k中情况,在n-1中取k-1个的可能
对应于杨辉三角:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1