c语言生成从1~N所有整数的全排列
时间: 2024-06-14 16:09:28 浏览: 5
在C语言中,可以使用递归的方式生成从1到N的所有整数的全排列。下面是一个示例代码:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
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++) {
swap(&arr[start], &arr[i]);
permute(arr, start + 1, end);
swap(&arr[start], &arr[i]); // 恢复数组
}
}
}
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;
}
```
这段代码中,`permute`函数使用递归的方式生成全排列。它接受一个数组`arr`、起始位置`start`和结束位置`end`作为参数。当`start`等于`end`时,表示已经生成了一个全排列,将数组中的元素打印出来。否则,从`start`到`end`的位置依次与`start`位置交换,然后递归调用`permute`函数生成剩余元素的全排列,最后再将数组恢复原样。
在`main`函数中,首先输入一个整数N,然后创建一个大小为N的数组,并将数组元素初始化为1到N。接着调用`permute`函数生成全排列。
运行程序后,会输出从1到N的所有整数的全排列。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)