第 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 小时