煎饼卷饼 2022-08-15 14:06 采纳率: 98.3%
浏览 68
已结题

怎么由c++改成c语言的假设有一个具有10个元素的集合S={0,1,2,3,4,5,6,7,8}编一程序,求集合S的所有子集

void GetPowerSet2(int nArray[], int nLength)
{
int mark = 0;
int i = 0;
int nStart = 0;
int nEnd = (1 << nLength) -1;//(2^n) -1
bool bNullSet = false;

for (mark = nStart; mark <= nEnd; mark++)
{
    bNullSet = true;
    for (i = 0; i < nLength; i++)
    {
        if (((1<<i)&mark) != 0) //该位有元素输出
        {
            bNullSet = false;
            printf("%d\t", nArray[i]);
        }
    }
    if (bNullSet) //空集合
    {
        printf("@\t");
    }
    printf("\n");
}

}

  • 写回答

2条回答 默认 最新

  • bostonAlen 2022-08-15 14:46
    关注
    
    //子集
    //对输入的任意正整数n,打印出集合{0,1,2,……,n-1}的所有子集
    //例如:输入3时,输出是:{}{0}{1}{2}{0,1}{0,2}{1,2}{0,1,2} --8个,2^3个子集
    //{1,2,3}--{1,1,1}
    //{1,2}--{1,1,0}
    //二进制
    #include<stdio.h>
    #include<math.h>
    int main() {
        int num,i,j,k,m,n=9;//int范围--2^31 第一位是符号位 
        int a[32]= {0}; //不能根据输入的n定义数组的大小,初始化一个尽可能大的数字
        //scanf("%d",&n);//int 2^31 所以n最大值为? 
        num=pow(2,n);//n个元素有2^n个子集 
        for(k=0; k<num; k++) {
            for(j=0;j<n;j++){//每次初始化为0
                a[j]=0;
            }
            //把k用二进制表示--对2取余
            i=0;
            m=k;
            while(m!=0){
                a[i]=m%2;
                m=m/2;
                i++;
            } 
            printf("{");
            i=0;
            while(i<n) {
                if(a[i]==1){
                    printf("%d ",i);//下标代表元素 
                }
                i++;
            }
            printf("}");
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月23日
  • 已采纳回答 8月15日
  • 创建了问题 8月15日

悬赏问题

  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测