题目描述
输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。
输入输出格式
输入格式:
n(1≤n≤9)
输出格式:
由1~n组成的所有不重复的数字序列,每行一个序列。每个数字保留5个常宽。
输入输出样例
输入样例#1: 复制
3
输出样例#1: 复制
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,vis[100000],a[100000];
void pre(){
for(int i=1;i<=n;++i)
printf("%5d",a[i]);
cout<<endl;
return;
}
void dfs(int pos){
if(pos>n){
pre();return;
}
for(int i=1;i<=n;++i){
if(vis[i]==0){
vis[i]=1;a[pos]=i;
dfs(pos+1);
vis[i]=0;
}
}
}
int main()
{
cin>>n;dfs(1);
return 0;
}