思路:使用dfs进行枚举
对于每个枚举节点,他只继续向下搜索比他已经包含的最大元素更大的元素
#include <bits/stdc++.h>
using namespace std;
void subset(int *a,int psz,int asz ,int las,int *p)
{
for(int i=las+1;i<psz;i++)
{
a[asz+1]=p[i];
for(int j=0;j<asz+2;j++)cout<<a[j]<<" ";cout<<endl;
subset(a,psz,asz+1,i,p);
}
}
int main()
{
int p[10],a[10],psz;
while(cin>>psz)
{
for(int i=0;i<psz;i++)cin>>p[i];
cout<<"---"<<endl;
subset(a,psz,-1,-1,p);
}
return 0;
}