挑战程序设计竞赛
P156
集合运算 | 二进制表示 |
---|---|
空集 | 0 |
只含有第i个元素的集合 | 1<<i |
含有全部n个元素的集合 | (1<<i)-1 |
判断第i个元素是否属于集合S | if((S>>i) & 1 |
向集合S中加入第i个元素 | S|=(1<<i) |
从集合S中去除第i个元素 | S&=(~(1<<i)) |
集合S和T的并集 | S|T |
集合S和T的交集 | S&T |
枚举所有子
for(int s=0; s< 1<<n; ++s) { 对子集的操作 }
挑战程序设计竞赛
P156
集合运算 | 二进制表示 |
---|---|
空集 | 0 |
只含有第i个元素的集合 | 1<<i |
含有全部n个元素的集合 | (1<<i)-1 |
判断第i个元素是否属于集合S | if((S>>i) & 1 |
向集合S中加入第i个元素 | S|=(1<<i) |
从集合S中去除第i个元素 | S&=(~(1<<i)) |
集合S和T的并集 | S|T |
集合S和T的交集 | S&T |
for(int s=0; s< 1<<n; ++s) { 对子集的操作 }