枚举一个集合的所有子集

来源:互联网 发布:前端js模块化开发 编辑:程序博客网 时间:2024/04/30 08:13

数字范围是0~9,即集合元素在10个及以下

//Subset.h#ifndef SUBSET_H#define SUBSET_Hclass Subset{    public:        Subset();        virtual ~Subset();        void Find_subset(int cur, int A[], int Asize);        void Print(int A[], int Asize);        int Array[10];    private:};#endif // SUBSET_H
//main.cpp#include <iostream>#include "Subset.h"using namespace std;int main(){    int i, num, A[10];    Subset Array1;    cin >> num;    for(i=0; i<num; i++)    {        cin >> Array1.Array[i];    }    Array1.Find_subset(0, A, num);    return 0;}
//Subset.cpp#include <iostream>#include "Subset.h"using namespace std;Subset::Subset(){}Subset::~Subset(){}void Subset::Find_subset(int cur, int A[], int Asize){    if(cur >= Asize)    {        Print(A, Asize);    }    else    {        A[cur] = Array[cur];        Find_subset(cur+1, A, Asize);        A[cur] = -111;        Find_subset(cur+1, A, Asize);    }}void Subset::Print(int A[], int Asize){    int i;    for(i=0; i<Asize; i++)    {        if(A[i] != -111)        {            cout << A[i] << " ";        }    }    cout << endl;}
输入:3    1 2 3输出:1 2 3     1 2     1 3     1     2 3     2     3

刚写完的数据结构课的作业就放上来了,IDE用的是codeblocks,新人一枚,希望各路大神多指点哈