递归
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n,m;
const int N=10;
int ans;
void dfs(int u,int nums[],bool st[])
{
if(u>n){
for(int i=1;i<=n;i++)cout<<nums[i]<<" ";
cout<<endl;
}
else{
for(int i=1;i<=n;i++)
if(!st[i])
{
st[i] =true;
nums[u] = i;
dfs(u+1,nums,st);
st[i]=false;//恢复现场
}
}
}
int main()
{
cin>>n;
int nums[N];
bool st[N]={0};
dfs(1,nums,st);
return 0;
}