c语言代码题 2.全排列1_dfs 【问题描述」任意输入n个不重复的整数序列,输出序列的全排列。 【输入形式]测试数据有多组,第一行是整数t(0<t<20),代表测试组数。每组测试数据 有两行,第一行是整数的个数n(0<n<6),第二行是个不重复的整数。 【输出形式]按递增的顺序输出序列的全排列。每个测试数据后面输出一个空行。
时间: 2023-05-25 22:03:57 浏览: 94
#include <stdio.h>
#include <stdbool.h>
#define MAX_N 10
int n;
int nums[MAX_N];
bool used[MAX_N];
void dfs(int cur, int *arr)
{
if (cur == n) {
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return;
}
for (int i = 0; i < n; i++) {
if (!used[i]) {
used[i] = true;
arr[cur] = nums[i];
dfs(cur + 1, arr);
used[i] = false;
}
}
}
int main()
{
int t;
scanf("%d", &t);
for (int i = 0; i < t; i++) {
scanf("%d", &n);
for (int j = 0; j < n; j++) {
scanf("%d", &nums[j]);
used[j] = false;
}
int arr[MAX_N] = { 0 };
dfs(0, arr);
printf("\n");
}
return 0;
}