DFS全排列
#include<stdio.h>
#include<string.h>
#define maxn 100010
int a[maxn];
int col[maxn];
int n;
void DFS(int num)
{
if (num==n){
for (int i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n");
}
else {
for (int i=1;i<=n;i++){
if (col[i]==0){
col[i]=1;
a[num]=i;
DFS(num+1);
col[i]=0;
}
}
}
}
int main()
{
while (~scanf("%d",&n)){
memset(a,0,sizeof(a));
memset(col,0,sizeof(col));
for (int i=1;i<=n;i++){
col[i]=1; //col[1]=1;
a[0]=i; //a[0]=1;
DFS(1);
col[i]=0;
}
}
return 0;
}