C++ 计算组合数 C(m, n) 的值 (n <= m <= 10) - 递归与循环实现
C++ 计算组合数 C(m, n) 的值 (n <= m <= 10)
本文将介绍如何使用 C++ 计算组合数 C(m, n),其中 n <= m <= 10。我们将提供两种实现方式:递归方式和循环方式,并附带详细的代码示例。
分析:
组合数 C(m, n) 可以用递归公式 C(m, n) = C(m-1, n-1) + C(m-1, n) 计算,边界条件是当 n = 0 或 n = m 时,C(m, n) 为 1。由于 m 和 n 都比较小,我们可以用递归方式计算,也可以用循环方式计算。
代码:(递归方式)
#include <iostream>
using namespace std;
int C(int m, int n) {
if (n == 0 || n == m) { // 边界条件
return 1;
} else {
return C(m-1, n-1) + C(m-1, n); // 递归公式
}
}
int main() {
int m, n;
cin >> m >> n;
cout << C(m, n) << endl;
return 0;
}
代码:(循环方式)
#include <iostream>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
int c[11][11] = {0}; // 用数组存储中间结果
for (int i = 0; i <= m; i++) {
c[i][0] = 1;
c[i][i] = 1;
}
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= i-1 && j <= n; j++) {
c[i][j] = c[i-1][j-1] + c[i-1][j];
}
}
cout << c[m][n] << endl;
return 0;
}
总结:
本文介绍了两种使用 C++ 计算组合数 C(m, n) 的方法,并附带了详细的代码示例,帮助您理解如何用 C++ 代码实现组合数的计算。您可以根据实际需求选择合适的实现方式。
原文地址: https://www.cveoy.top/t/topic/n6AM 著作权归作者所有。请勿转载和采集!