【Black_Panda】二进制枚举算法
二进制枚举算法
-
一个二进制数 对应着一个子集 。
-
通过判断
x&(1<<i)
是否非 ,可以判断出 中是否包含编号为 的元素。 -
例如:
- 选取第一、三、四、六、七件物品
- 说明 对应的子集(选取方案)中包含编号为 (第 个)元素。
- 说明 对应的子集(选取方案)中不包含编号为 (第 个)元素。
1.输出一个数 对应的子集中的所有元素
for(int i=0;i<n;i++)
if(x&(1<<i)) cout<<i<<endl;
2.枚举这个 元集合的所有子集
for(int S=0;S<(1<<n);S++){
//...
}
3.枚举一个数 对应的集合的子集
for(int y=x;y;y=(y-1)&x){
//...
}
本文来自博客园,作者:Black--Panda,转载请注明原文链接:https://www.cnblogs.com/liu-black/p/erjinzhimeijv.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现