c语言求所有元素的全排列(回溯法)
时间: 2024-05-04 21:21:58 浏览: 88
C语言将数据全排列算法
下面是使用回溯法实现全排列的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXN 15
int n; // 元素个数
int a[MAXN]; // 存储元素
int used[MAXN] = {0}; // 标记元素是否已使用
void dfs(int step) {
if (step == n) { // 已经排列完毕
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return;
}
for (int i = 0; i < n; i++) {
if (!used[i]) { // 如果元素未被使用
a[step] = i + 1; // 将元素加入排列中
used[i] = 1; // 标记元素已使用
dfs(step + 1); // 继续排列下一位
used[i] = 0; // 回溯,取消标记
}
}
}
int main() {
printf("请输入元素个数 n (1 <= n <= %d):", MAXN);
scanf("%d", &n);
dfs(0);
return 0;
}
```
程序输入需要排列的元素个数,然后调用 `dfs` 函数进行排列,最终输出所有的排列方案。
阅读全文