位运算是个超级牛叉,可以拯救世界的东西。其中可以利用二进制进行进行集合的子集枚举
下面是应该挺容易看懂的代码
#include<iostream>
#include<cstdlib>
using namespace std;
int a[10]={0,1,2,3,4,5,6,7,8,9};
int main()
{
int i;
for(i=1;i<=(1<<10);i++)//子集的个数
{
int s;
for(int j=0,s=1;j<10;j++)//子集的内容
{
if(i&s)
cout<<a[j]<<' ';
s=(s<<1);
}
cout<<endl;
system("pause");
}
}