6 全排列

描述
任意输入 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",&times);
	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;
}

猜你喜欢

转载自blog.csdn.net/jiuweideqixu/article/details/87882926