C++程序在线爸爸们帮帮我

img

#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;
}

定义一个数组,判断小于等于指定数字的值放到数组,然后输出数组即可。