题解:直接搜索,当然也可以用stl的next_permutation函数
#include <iostream>
#include <cstdio>
using namespace std;
int n,s;
int a[100],vis[100];
void print()
{
for(int i=1;i<=n;i++)
printf("%d ",a[i]);
printf("\n");
}
int dfs(int x)
{
if(x>n) print();
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
a[x]=i;
vis[i]=1;
dfs(x+1);
vis[i]=0;
a[x]=0;
}
}
}
int main()
{
cin>>n;
dfs(1);
return 0;
}