设计递归算法生成n个元素的所有排列对象的C语言代码
时间: 2024-06-01 20:09:51 浏览: 80
生成全排列 C语言 递归的
4星 · 用户满意度95%
#include <stdio.h>
void permute(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++) {
// 交换第一个元素与当前元素
int temp = arr[start];
arr[start] = arr[i];
arr[i] = temp;
// 递归求解剩余元素的排列
permute(arr, start + 1, end);
// 恢复数组原始状态
temp = arr[start];
arr[start] = arr[i];
arr[i] = temp;
}
}
}
int main() {
int n;
printf("请输入元素个数n:");
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
arr[i] = i + 1;
}
permute(arr, 0, n - 1);
return 0;
}
阅读全文