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: 翻转矩阵后的得分 (Score After Flipping Matrix)
// @Author: 15816537946@163.com
// @Date: 2020-12-07 09:03:18
// @Runtime: 0 ms
// @Memory: 2.2 MB
func matrixScore(A [][]int) int {
	m, n := len(A), len(A[0])
	// 考虑第一列的综合
	ans := 1 << (n - 1) * m

	// 考虑余下的列的累加
	for j := 1; j < n; j++ {
		ones := 0
		for _, row := range A {
			if row[0] == row[j] {
				ones++ // 因为要考虑最初进行的行反转, 所以只要判断当前列跟第一列的元素是否相同
			}
		}
		if ones < m-ones {
			ones = m - ones
		}
		ans += 1 << (n - 1 - j) * ones
	}
	return ans

}