There for you.
------------------------------
递归构造全排列,很经典的问题,从后n位的全排列-》后n-1位的全排列,一边构造,一边判重,符合就储存,注意,此处边判断边输出不好。
最后,不要忘记复位。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n;
bool used[20];
int a[20];
void p(int d){
if(!d) {
for(int j=n;j>=1;j--)
cout<<a[j];
cout<<endl;
}
for(int i=1;i<=n;i++){
if(!used[i]){
used[i]=1;
a[d]=i;
p(d-1);
used[i]=0;
}
}
return ;
}
int main(){
cin>>n;
memset(used,0,sizeof(used));
p(n);
return 0;
}