c语言的排列组合
时间: 2023-06-21 19:23:13 浏览: 57
在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`函数实现了对给定数组的元素进行组合操作。这两个函数均使用递归实现。