用c语言写排列组合代码
时间: 2023-05-14 14:06:25 浏览: 155
以下是一个用 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语言计算排列组合cnm
计算排列组合的公式为***!/((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语言中,可以使用递归来实现排列组合。以下是一个简单的示例代码:
```
#include <stdio.h>
void combination(int arr[], int data[], int start, int end, int index, int r) {
if (index == r) {
for (int i = 0; i < r; i++) {
printf("%d ", data[i]);
}
printf("\n");
return;
}
for (int i = start; i <= end && end - i + 1 >= r - index; i++) {
data[index] = arr[i];
combination(arr, data, i + 1, end, index + 1, r);
}
}
void permutation(int arr[], int data[], int used[], int index, int n, int r) {
if (index == r) {
for (int i = 0; i < r; i++) {
printf("%d ", data[i]);
}
printf("\n");
return;
}
for (int i = 0; i < n; i++) {
if (!used[i]) {
data[index] = arr[i];
used[i] = 1;
permutation(arr, data, used, index + 1, n, r);
used[i] = 0;
}
}
}
int main() {
int arr[] = {1, 2, 3, 4};
int n = sizeof(arr) / sizeof(arr[0]);
int r = 3;
int data[r];
int used[n];
printf("Permutations:\n");
permutation(arr, data, used, 0, n, r);
printf("Combinations:\n");
combination(arr, data, 0, n - 1, 0, r);
return 0;
}
```
在这个示例代码中,`permutation`函数实现了对给定数组的元素进行排列操作,`combination`函数实现了对给定数组的元素进行组合操作。这两个函数均使用递归实现。