二进制方法 解 集合的幂集
离散数学的一道作业题目,求集合的幂集。
代码如下(摘自网络,自己修改)
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;