1552: 【入门】n个数的全排列

内存限制:32 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:4 解决:3

题目描述

从键盘读入n个整数(每个数都是1~9之间的数),输出这n个整数的全排列(数字不能重复)。

输入

1行输入一个整数n1<=n<=8

2行输入n个不相等的整数(1<=每个数<=9)。

输出

输出若干行,每行包括n个数据,表示一种排列方案,所有的排列按字典码从小到大排序输出

样例输入 复制

3
2 4 6

样例输出 复制

2 4 6
2 6 4
4 2 6
4 6 2
6 2 4
6 4 2

提示

#include<bits/stdc++.h>
using namespace std;
#define N 10
int n,a[N];
bool used[N];
int path[N];
void print(){
	for(int i=1;i<=n;i++){
		cout<<path[i]<<' ';
	}
	cout<<endl;
}
void dfs(int x){
	if(x>n){
		print();
		return;
	}
	for(int i=1;i<=n;i++){
		if(!used[i]){
			used[i]=1;
			path[x]=a[i];
			dfs(x+1);
			used[i]=0;
		}
		
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+n+1);
	dfs(1);
	return 0;
}