二进制方法 解 集合的幂集

离散数学的一道作业题目,求集合的幂集。

代码如下(摘自网络,自己修改)

int i,j,k,t,y,sum;
    int a[8]=0;  // 二进制数组有点投机取巧
    SetElem *pAElem;
    SetElem *pBElem;
    pAElem = outToBuffer(pA);//pA输出缓存区
    pFamilyOfSet pFamSet;
    pFamSet = createNullFamilyOfSet();//创建空集族
    for(i=0,pBElem=pAElem;*pBElem != '\n';++pBElem) //元素个数
        i++;
    for(j=i,sum=1;j>0;j--) //幂集总数
        sum=sum*2;
    for(k=1;k<=sum;k++)
    {       
        pSet pC = createNullSet(); //创建子集pC
        for(j=0;j<i;j++)
        {  
            if(a[j]!=0)
            { 
                pBElem=pAElem;
               for(y=0;y<j;y++)//添加对应的元素
                    pBElem++;
               directInsertSetElem(pC,*pBElem);//插入元素
              }
        }
        insertToFamilyOfSet(pFamSet,pC);//插入子集
        for(t=i-1;t>=0;t--)
        {
            if(a[t]==0)
                {
                    a[t]=1;
                    break;
                }
            else
                a[t]=0;   
        }
    }
    return pFamSet;

原文地址:https://www.cnblogs.com/ss815367696/p/2830316.html