假设非可重集。
-----------------------------------
#include <iostream>
#include <cstdio>
using namespace std;
int n,p[20];
bool b[20];
void sub(int cur){
if(cur==n+1){//递归边界
for(int i=1;i<=n;i++)
if(b[i]) cout<<p[i];
cout<<endl;
return ;
}
b[cur]=1;
sub(cur+1);
b[cur]=0;
sub(cur+1);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>p[i];
sub(1);
return 0;
}