描述
任意输入 n 个不重复的整数序列,输出序列的全排列。输入
测试数据有多组,第一行是整数 t (0<t<20 ),代表测试组数。每组测试数据有两行,第一行是整数的个数 n(0<n<6) ,第二行是 n 个
不重复的整数。
输出
按递增的顺序输出序列的全排列。每个测试数据后面输出一个空行。
样例输入
1
3
1 3 5
样例输出
1 3 5
1 5 3
3 1 5
3 5 1
5 1 3
5 3 1
递归,回溯,排序
#include<cstdio>
#include<algorithm>
using namespace std;
int num[6];
int numb[6];
int vis[6];
void digui(int cnt,int n){
if(cnt==n){
for(int i=0;i<n;i++){
printf("%d ",numb[i]);
}
printf("\n\n");
return;
}
for(int i=0;i<n;i++){
if(!vis[i]){
vis[i] = 1;
numb[cnt] = num[i];
digui(cnt+1,n);
vis[i]=0;
}
}
}
int main(){
//freopen("data.txt","r",stdin);
int n,times;
scanf("%d",×);
while(times--){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
}
sort(num,num+n);
digui(0,n);
}
return 0;
}