zoukankan      html  css  js  c++  java
  • 二进制方法 解 集合的幂集

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

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

    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;

  • 相关阅读:
    day10T3改错记
    day9T1改错记
    day8T1改错记
    洛谷P5068[Ynoi2015]我回来了(bfs+bitset)
    BZOJ4939[Ynoi2016]掉进兔子洞(莫队+bitset)
    [学习笔记]dsu on tree
    [学习笔记]FWT(快速沃尔什变换)
    [学习笔记]FMT(快速莫比乌斯变换)&子集卷积(待填坑)
    POJ-1743-Musical Theme(后缀数组)
    后缀数组模板
  • 原文地址:https://www.cnblogs.com/ss815367696/p/2830316.html
Copyright © 2011-2022 走看看