用C++计算C(n,m)的值,C(n,m)代表从n个元素中选取m个元素的方法数,其中有1<= m <= n<= 65。 输入: 输入数据有多组,每组数据一行,有2个整数分别为n和m。 输出: 输出从总共n个元素中选出m个元素共有多少种方法?
时间: 2024-10-20 09:18:13 浏览: 16
从N选取M个数的所有组合数C++描述C++描述
4星 · 用户满意度95%
在C++中,你可以使用组合公式`C(n, m)` = `n! / (m!(n-m)!)`来计算从n个元素中选择m个元素的方法数,其中`!`表示阶乘。为了处理这个计算并考虑到n和m的范围(1<= m <= n <= 65),可以编写一个递归或动态规划函数。下面是一个简单的递归版本的代码示例:
```cpp
#include <iostream>
using namespace std;
// 计算阶乘
long long factorial(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * factorial(n - 1);
}
// 计算组合 C(n, m)
long long combination(int n, int m) {
if (m > n || m < 0)
return 0; // 非法输入处理
else
return factorial(n) / (factorial(m) * factorial(n - m));
}
int main() {
int n, m;
while (cin >> n >> m) {
if (n >= 1 && m >= 1 && n <= 65 && m <= 65) { // 检查输入范围
cout << "C(" << n << ", " << m << ") = " << combination(n, m) << endl;
} else {
cout << "非法输入!" << endl;
}
}
return 0;
}
```
阅读全文