c语言怎么实现排列组合算法
导读:C语言实现排列组合算法可以使用递归或迭代的方式来实现。以下是使用递归实现排列组合算法的示例代码: #include <stdio.h> // 计算阶乘 int factorial(int n { if (n <...
C语言实现排列组合算法可以使用递归或迭代的方式来实现。以下是使用递归实现排列组合算法的示例代码:
#include stdio.h>
// 计算阶乘
int factorial(int n) {
if (n = 1) {
return 1;
}
else {
return n * factorial(n - 1);
}
}
// 排列
void permutation(int arr[], int start, int end) {
if (start == end) {
for (int i = 0;
i = end;
i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
else {
for (int i = start;
i = end;
i++) {
// 交换arr[start]和arr[i]
int temp = arr[start];
arr[start] = arr[i];
arr[i] = temp;
permutation(arr, start + 1, end);
// 恢复arr[start]和arr[i]的交换
temp = arr[start];
arr[start] = arr[i];
arr[i] = temp;
}
}
}
// 组合
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);
}
}
int main() {
int arr[] = {
1, 2, 3}
;
int n = sizeof(arr) / sizeof(arr[0]);
// 排列
printf("Permutations:\n");
permutation(arr, 0, n - 1);
// 组合
printf("\nCombinations:\n");
for (int r = 1;
r = n;
r++) {
int data[r];
combination(arr, data, 0, n - 1, 0, r);
}
return 0;
}
以上代码中,permutation
函数使用递归实现排列算法,combination
函数使用递归实现组合算法。可以根据需要传入不同的起始位置和结束位置来计算不同长度的排列组合。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: c语言怎么实现排列组合算法
本文地址: https://pptw.com/jishu/574247.html