升天Time.
--------------------------------
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
int a[20],p[20],used[20],num[20];
void perm(int d){
if(!d) {
for(int j=n;j>=1;j--)
cout<<a[j];
cout<<endl;
}
for(int i=0;i<n;i++){//不小心将i赋为了全局变量
if(used[p[i]]<num[p[i]]&&(!i||p[i]!=p[i-1])){
//没有在同一层循环调用两个相同的元素
used[p[i]]++;
a[d]=p[i];
perm(d-1);
used[p[i]]=0;
}
}
return ;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>p[i];
num[p[i]]++;
}
sort(p,p+n);
perm(n);
return 0;
}
---------------------------------------------------------------------
STL版
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,p[20];
int main(){
cin>>n;
for(int i=0;i<n;i++)
cin>>p[i];
sort(p,p+n);
do{
for(int i=0;i<n;i++)
cout<<p[i];
cout<<endl;
}
while(next_permutation(p,p+n));
return 0;
}