java版本:
class Solution {
int count,max;
public int countMaxOrSubsets(int[] nums) {
// & | ~ ^
// 最大的肯定是所有的按位或
// 做减法
for(Integer num:nums){
max|=num;
}
// 每次去掉一个看结果是不是还是原来的
// 算了还是暴力搜索
dfs(0,nums,0);
return count;
}
public void dfs(int index,int[] nums,int num_max){
if(index==nums.length){
if(num_max==max){
count++;
}
return;
}
dfs(index+1,nums,num_max|nums[index]);
dfs(index+1,nums,num_max);
}
}
网友评论