子集生成+stl全排列
#include <cstdio>
#include <string>
#include <sstream>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
void print(int n,int s,int p[])
{
for(int i=0;i<n;i++)
{
if(s&(1<<i))
printf("%d ",p[i]);
}
puts("");
}
int main()
{
int n,p[10];
cin>>n;
for(int i=0;i<n;i++)
cin>>p[i];
//sort(p,p+n);
for(int i=0;i<(1<<n);i++)
{
print(n,i,p);//二进制子集生成法
}
return 0;
}
// stl 方法
// int top = 1;
// do
// {
// if(top)top = 0;
// else
// {
// for(int i=0;i<n;i++)
// printf("%d ",p[i]);
// printf("\n");
// }
//
// }
// while(next_permutation(p,p+n));