#include <iostream>
using namespace std;
const int _N = 10000;
int d[_N], p[_N];
bool flag[_N];
int n;
void dfs(int pos)
{
int i;
if(pos == n)
{
for(i = 0; i < n; i++)
cout<<d[i]<<" ";
cout<<endl;
return;
}
for(i = 0; i < n; i++)
{
if(!flag[i])
{
flag[i] = true;
d[pos] = p[i];
dfs(pos + 1);
flag[i] = false;
}
}
}
int main()
{
int i;
cin>>n;
memset(flag, false, sizeof(flag));
for(i = 0; i < n; i++)
p[i] = i + 1;
dfs(0);
return 0;
}
[color=red]输入3
输出
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1[/color]