- #include<bits/stdc++.h>
- using namespace std;
- int main()
- {
- char set[]={'a','b','c'};
- int sizeSet=sizeof(set)/sizeof(set[0]);
- int sizePowset=pow(2,sizeSet);
- int cnt=0;// 统计输出的子集个数
- for(int i=0;i<sizePowset;i++)
- {
- for(int j=0;j<sizeSet;j++)// 对于 0-7 这 8 个数总过检测三个 bit 所以有此循环
- {
- if(i&(1<<j))// 左移是检测 2_1_0_三个 bit 上是否为 1
- cout<<set[j];// 如果当前 bit 为 1 则输出对应 bit 位在集合中元素
- }
- cout<<endl;
- cnt++;
- }
- cout<<cnt<<endl;
- return 0;
- }
来源: http://www.bubuko.com/infodetail-3010490.html