首页 > 其他 > 详细

状态压缩

时间:2019-08-30 00:06:48      阅读:113      评论:0      收藏:0      [点我收藏+]

定义

状态压缩,实际上是将一个30左右长度的bool数组用一个int来表示。为什么呢?众所周知,bool类型只有0,1两种两种类型。而计算机又是用二进制来存储数字,加之强大的位运算功能,我们便可以更改整数在二进制下表示的每一位的数字,来表示不同的状态。由于其与位运算密切相关,所以我们先来讨论一下位运算的事情。

位运算

不做演示,可以自行演示验证

S是原集合

S&(1<<(k-1))   取出第k位
 ^             将第k位取反
 |             将第k位强制变1
S^(1<<k-1)       取补集 
S&(-S)         取出右起第一个1  ,减掉这个结果数就更新状态 lowbit
S|A==S         A是S的子集
for(x=s;x;s&(x-1)  枚举子集
 

状态压缩

原文:https://www.cnblogs.com/Uninstalllingyi/p/11432672.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!