第 22 课:枚举算法-子集枚举

作业介绍

子集枚举

  • 前置知识:位运算
  • 核心:用二进制每一位的 0/1 表示“选/不选”状态

模板

//for(int i=1;i<=n;i++)  和以往从1开始编号不同的是
for(int i=0;i<n;i++){  // 物品从0开始编号
    cin>>a[i];
}
for(int i=0;i<(1<<n);i++){  // 列举所有状态码,0~2^n-1,0为空,2^n-1为全选
    for(int j=0;j<n;j++){  // 解压状态码的右数0~n-1位
        if(i>>j&1){  // 状态码i的第j位是1,代表选了第j个物品
          
        }
    }
    //一个状态码解压结束
}
状态
已结束
题目
11
开始时间
2026-7-2 17:00
截止时间
2026-7-17 17:00
可延期
24 小时