算法:子集生成

给定一个集合,枚举所有可能出现的子集。
有三种解法:增量构造、位向量、二进制。
算法讲究的简介,所以只介绍二进制法子。
从右往左第i位(从0开始编号):1表示元素i在集合中,0表示不在。

#include
using namespace std;

void prs(int n,int s){  
    for(int i=0;i//输出子集 
        if(s & (1<//1左移i位,if()  括号里只有0时为假 
          cout<cout<int main() {  
    int n;
    cin>>n;  
    for(int i=0;i<(1<//枚举子集对应的编码 
    {
        prs(n,i);  
    }  
    return 0;  
}  

输入
3
输出
0
1
01
2
02
12
012

你可能感兴趣的:(c++算法)