1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// @Title: 统计按位或能得到最大值的子集数目 (Count Number of Maximum Bitwise-OR Subsets)
// @Author: 15816537946@163.com
// @Date: 2022-03-15 18:25:26
// @Runtime: 8 ms
// @Memory: 1.8 MB
func countMaxOrSubsets(nums []int) int {
    maxOr := 0
    var ans int 
    var dfs func(int, int)
    dfs = func(pos, or int) {
        if pos == len(nums) {
            if or > maxOr {
                maxOr = or 
                ans = 1
            } else if or == maxOr {
                ans++
            }
            return 
        }
        
        dfs(pos+1, or|nums[pos])
        dfs(pos+1, or)
    }

    dfs(0,0)
    return ans
}