class Solution {
public:
int Max=0;
int Num=0;//Num是最终答案
int countMaxOrSubsets(vector<int>& nums) {
backtracking(nums,0,0);
return Num;
}
void backtracking(vector<int>& nums,int st,int res) //这里的res表示数组或运算得到的值
{
if(res>Max)
{
Max=res;
Num=1;
}
else if(res==Max)
{
Num++;
}
for(int i=st;i<nums.size();i++)
{
int ori=res;
res|=nums[i];
backtracking(nums,i+1,res);
res=ori;
}
}
};