1552: 【入门】n个数的全排列
内存限制:32 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:4
解决:3
题目描述
从键盘读入n个整数(每个数都是1~9之间的数),输出这n个整数的全排列(数字不能重复)。
输入
第1行输入一个整数n(1<=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;
}