#include<iostream>
using namespace std;
const int N=10;
int a[N];
bool b[N];//0表示该数没有用过,1表示该数已经用过了
int m;
void dfs(int u)
{
if(u>m){
for(int i=1;i<=m;i++)
{
cout<<a[i]<<" ";
}
puts("");
return ;
}
//依次枚举每个数,看当前位置可以填哪个数
for(int i=1;i<=m;i++)
{
if(b[i]==false){
a[u]=i;
b[i]=true;
dfs(u+1);
a[u]=0;
b[i]=false;
}
}
}
//看每个位置可以放哪些数
int main()
{
cin>>m;
dfs(1);
return 0;
}

京公网安备 11010502036488号