升天Time.
--------------------------------
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int k,n;
int s[20],p[20];
bool used[20];
void sub(int num){//num为元素个数
if(!num){//递归边界
for(int i=0;i<n;i++)//弄清楚模型
if(s[i]) cout<<s[i];
cout<<endl;
//不必清空,接下来一组也是从最后开始存,存的顺序一致,可覆盖
return ;
}
for(int i=k;i<n;i++){
if(!used[p[i]]){
s[n-num]=p[i];//是从最后一位开始存的
used[p[i]]=1;
k=i;//此时符合条件的元素的编号
sub(num-1);
used[p[i]]=0;
}
}
return ;
}
int main(){
cin>>n;//生成n元素集合的子集
for(int i=0;i<n;i++)
cin>>p[i];
//假设无重复元素
for(int i=1;i<=n;i++){
sub(i);
k=0;
}
return 0;
}