如何编译输出1到n全排序的函数
时间: 2023-04-03 16:03:31 浏览: 41
可以使用递归的方式实现1到n的全排列。具体实现方法如下:
```
void permute(int* nums, int numsSize, int* used, int* res, int depth) {
if (depth == numsSize) {
for (int i = 0; i < numsSize; i++) {
printf("%d ", res[i]);
}
printf("\n");
return;
}
for (int i = 0; i < numsSize; i++) {
if (!used[i]) {
used[i] = 1;
res[depth] = nums[i];
permute(nums, numsSize, used, res, depth + 1);
used[i] = 0;
}
}
}
void printPermutations(int n) {
int nums[n];
int used[n];
int res[n];
for (int i = 0; i < n; i++) {
nums[i] = i + 1;
used[i] = 0;
}
permute(nums, n, used, res, 0);
}
```
其中,`nums` 数组存储了1到n的数字,`used` 数组用于标记数字是否已经被使用过,`res` 数组用于存储当前排列的结果,`depth` 表示当前排列的深度。在 `permute` 函数中,首先判断当前排列是否已经完成,如果是则输出结果,否则依次尝试每个数字进行排列。在 `printPermutations` 函数中,初始化数组并调用 `permute` 函数即可输出1到n的全排列。