输出1到n的全排列c语言
时间: 2024-10-13 13:02:35 浏览: 49
N个数全排列c语言算法
5星 · 资源好评率100%
在C语言中,生成一个整数序列从1到n的所有全排列是一个典型的回溯算法问题。以下是使用递归函数实现的一个简单示例:
```c
#include <stdio.h>
// 排列数组
#define N 6 // 可修改这个值来改变全排列的数量
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 用于保存当前排列状态的辅助函数
void permute(int arr[], int l, int r) {
if (l == r)
printf("%d ", arr[l]);
else {
for (int i = l; i <= r; i++) {
swap(&arr[l], &arr[i]); // 交换元素
permute(arr, l + 1, r); // 递归处理剩余位置
swap(&arr[l], &arr[i]); // 回溯:恢复原状态
}
}
}
int main() {
int arr[N] = {1, 2, 3, 4, 5, 6}; // 示例输入,可替换为你需要的范围
int n = sizeof(arr) / sizeof(arr[0]);
printf("Permutations of 1 to %d:\n", n);
permute(arr, 0, n - 1);
return 0;
}
```
当你运行这个程序时,它会打印出1到n的所有全排列。请注意,对于较大的n值,这种方法可能会非常耗时,因为全排列的数量增长很快。
阅读全文