二进制枚举子集
定义:用二进制的一位表示集合对应某一元素的选取状态,1表示选取,0表示未选取。
位的逻辑运算符:位运算是对二进制的每一位进行计算,所以每一位只有0或1两种可能。常用的位运算符:与 & 、或 | 、异或 ^ ,运算规则
与运算:两者都为1时,结果即为1,否则为0 。
或运算:两者都为0时,结果即为0,否则为1。
异或运算:是两者同为0或1时,结果即为 0,否则为1 。
注意:^是异或不是次方
常用位运算符号:
对于 A << B ,表示把 A 转化为二进制后向左移动 B 位(在末尾添加 B个 0 )。
对于 A >> B ,表示把 A 转化为二进制后向右移动 B 位(删除末尾的 B 位)
模板:
int n=xxx; //n是集合元素数
for (int i = 0; i < (1<<14); ++i) {
for (int j = 0; j < 14; +&#