简单的回溯法
#include <iostream.h>
const int Maxn = 32;
bool flag[Maxn];
void PowerSet(int i,int n) {
int j;
if (i>n) { //输出幂集的一个元素;
for(j=1;j<=n;j++)
if (flag[j] == true) cout<<j;
cout<<endl;
}
else { flag[i] = true; //取第i个元素;
PowerSet(i+1,n);
flag[i] = false; //不取第i个元素;
PowerSet(i+1,n);
}
void main()
{ int i;
for(i=0;i<Maxn;i++)
flag[i] = false;
PowerSet(1,5);
}