算法:
方法一:暴力
func maximumRows(matrix [][]int, numSelect int) int {
m, n := len(matrix), len(matrix[0])
mask := make([]int, m)
for i := range matrix {
for j := range matrix[i] {
mask[i] = (matrix[i][j] << j) | mask[i]
}
}
ans := 0
for colMask := 0; colMask < 1 << n; colMask ++ {
if countOfOne(colMask) != numSelect {
// if bits.OnesCount(uint(colMask)) != numSelect {
continue
}
count := 0
for _, v := range mask {
if colMask & v == v {
count ++
}
}
ans = max(count, ans)
}
return ans
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
func countOfOne(n int) int {
ans := 0
for n > 0 {
if n & 1 == 1 {
ans ++
}
n = n >> 1
}
return ans
}