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++ 代码实现组合数的计算。您可以根据实际需求选择合适的实现方式。

C++ 计算组合数 C(m, n) 的值 (n <= m <= 10) - 递归与循环实现

原文地址: https://www.cveoy.top/t/topic/n6AM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录