#include <iostream>
using namespace std;
void print_subset(int n,int s)//输出子集s包含的元素
{
for(int i=0;i<n;i++)
{
//<<把一个整型数的所有位向左移动指定的位数,移动到左边界之外的多余二进制位会被丢弃,并从右边界移入0
if(s&(1<<i))//从最右侧开始遍历s中是否含有相应的元素
cout << i+1 << " ";
}
cout << endl;
}
int main()
{
int n=3;
for(int i=0;i<(1<<n);i++)//设置二进制数的长度,枚举子集
print_subset(3,i);
return 0;
}
定义一个数组,判断小于等于指定数字的值放到数组,然后输出数组即可。