[leetcode]861. Score After Flipping Matrix
Analysis
周三不快乐~—— [ummm~]
We have a two dimensional matrix A where each value is 0 or 1.
A move consists of choosing any row or column, and toggling each value in that row or column: changing all 0s to 1s, and all 1s to 0s.
After making any number of moves, every row of this matrix is interpreted as a binary number, and the score of the matrix is the sum of these numbers.
Return the highest possible score.
首先保证每一行的第一个数是1,然后从第二列开始遍历,保证每一列的1比0多就行了~
Implement
class Solution {
public:
int matrixScore(vector<vector<int>>& A) {
int row = A.size();
int col = A[0].size();
for(int i=0; i<row; i++){
if(A[i][0] == 0){
for(int j=0; j<col; j++){
if(A[i][j] == 0)
A[i][j] = 1;
else
A[i][j] = 0;
}
}
}
for(int i=1; i<col; i++){
int cnt0 = 0;
int cnt1 = 0;
for(int j=0; j<row; j++){
if(A[j][i] == 1)
cnt1++;
else
cnt0++;
}
if(cnt0 > cnt1){
for(int j=0; j<row; j++){
if(A[j][i] == 0)
A[j][i] = 1;
else
A[j][i] = 0;
}
}
}
int res = 0;
for(int i=0; i<row; i++){
for(int j=0; j<col; j++){
res += (A[i][j]*pow(2, col-j-1));
}
}
return res;
}
};