#include<bits/stdc++.h>
using namespace std;
int n;//n<=10;
int b[120],flag[120],p;//flag为0表示未标记;flag为1表示已标记;
void pr(){
for(int i=1;i<=n;i++){
cout<<setw(5)<<b[i];//setw(5)指场宽为五;
}cout<<"\n";
}
int dfs(int x){
if(x>n){
pr();
}
for(int i=1;i<=n;i++){
if(!flag[i]){//从一遍历到N看是否符合条件;
b[x]=i;
flag[i]=1;
dfs(x+1);
flag[i]=0;
}
}
}
int main(){
cin>>n;
dfs(1);
return 0;
}
从n=1时开始深搜,当x>n时为终止条件;