c语言代码题 全排列1_dfs 【问题描述】任意输入n个不重复的整数序列,输出序列的全排列。 【输入形式】测试数据有多组,第一行是整数t(0<t<20),代表测试组数。每组测试数据有两行,第一行是整数的个数n(0<n<6),第二行是n个不重复的整数。
时间: 2023-05-29 16:06:25 浏览: 93
输出n个整数的全排列
4星 · 用户满意度95%
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 6
int t, n;
int nums[MAX_N];
int used[MAX_N];
int ans[MAX_N];
void dfs(int step)
{
if (step == n) {
for (int i = 0; i < n; i++) {
printf("%d ", ans[i]);
}
printf("\n");
return;
}
for (int i = 0; i < n; i++) {
if (!used[i]) {
used[i] = 1;
ans[step] = nums[i];
dfs(step + 1);
used[i] = 0;
}
}
}
int main()
{
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
memset(used, 0, sizeof(used));
dfs(0);
}
return 0;
}
阅读全文