c语言计算排列组合cnm
时间: 2023-12-02 17:38:14 浏览: 62
计算排列组合的公式为***!/((n-m)!m!),其中n>=m>=0。
下面是C语言计算排列组合的示例代码:
```c
#include <stdio.h>
int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
int permutation(int n, int m) {
return factorial(n) / factorial(n - m);
}
int combination(int n, int m) {
return factorial(n) / (factorial(n - m) * factorial(m));
}
int main() {
int n = 5, m = 3;
printf("A(%d,%d) = %d\n", n, m, permutation(n, m));
printf("C(%d,%d) = %d\n", n, m, combination(n, m));
return 0;
}
```
输出结果为:
```
A(5,3) = 60
C(5,3) = 10
```
相关问题
用c语言写排列组合代码
以下是一个用 C 语言编写的排列组合代码示例:
```c
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int permutation(int n, int r) {
return factorial(n) / factorial(n - r);
}
int combination(int n, int r) {
return factorial(n) / (factorial(r) * factorial(n - r));
}
int main() {
int n = 5;
int r = 3;
printf("Permutation of %d and %d: %d\n", n, r, permutation(n, r));
printf("Combination of %d and %d: %d\n", n, r, combination(n, r));
return 0;
}
```
该代码使用递归函数计算阶乘,并使用阶乘计算排列和组合。在主函数中,我们定义了 n 和 r 的值,并打印出排列和组合的结果。
c语言排列组合不用数组
在C语言中,可以使用递归的方式实现排列组合,而不必使用数组。具体实现方法如下:
1. 排列
排列是从n个不同元素中取出m个元素进行排列,可以使用递归的方式实现。具体步骤如下:
- 如果m等于1,则直接输出当前元素;
- 否则,从当前元素开始,依次选取一个元素,然后对剩下的元素进行递归排列,直到m等于1。
2. 组合
组合是从n个不同元素中取出m个元素进行组合,同样可以使用递归的方式实现。具体步骤如下:
- 如果m等于1,则依次输出当前元素之后的所有元素;
- 否则,从当前元素的下一个元素开始,依次选取一个元素,然后对剩下的元素进行递归组合,直到m等于1。
需要注意的是,在递归过程中需要记录当前已经选取的元素个数,以及当前已经选取的元素的值。