子集的枚举


通过二进制枚举子集。利用一个int 变量,循环自增,就可以得到2^n种状态,具有极高的泛用性。

mask = 1 << n 表示 全选的情况下的mask数值+1

和dfs感觉上差不多,都是一种暴力搜索的方式,但是写法相对简单。

https://leetcode-cn.com/problems/count-number-of-maximum-bitwise-or-subsets/submissions/

class Solution {
public:
    int countMaxOrSubsets(vector& nums) {
        int n=nums.size();
        int mask=1<>i) & 1)==1) cur |=nums[i];
            }
            if(cur>max){
                max=cur;
                ans=1;
            }else if(cur==max){
                ans++;
            }
        }
        return ans;
    }
};