方法一
如果int不够用就换成long long
int C(int n, int m) //求组合数
{
if (m < n - m) m = n - m;
int ans = 1;
for (int i = m + 1; i <= n; i++) ans *= i;
for (int i = 1; i <= n - m; i++) ans /= i;
return ans;
}
方法二
利用组合数的递推公式

int C[10][10];
void Init() {
for (int i = 0; i < 10; i++) {
for (int j = 0; j <= i; j++) {
if (!j) C[i][j] = 1;
else C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
}
}
} //此时C[m][n]就是m,n的组合数
本文介绍两种计算组合数的方法:一种是直接使用循环计算组合数,适用于较小的数据范围;另一种是利用组合数的递推公式预计算,适用于需要多次查询的情况。
2309

被折叠的 条评论
为什么被折叠?



