每一行或者列0-1 1-0
第一列必须全部变为1,而且计算的时候直接计算出实际的值是多少,这一步很好使
其余的我们就看剩余的列保证每一列1的数量最多
贪心思想
class Solution {
public:
int matrixScore(vector<vector<int>>& A) {
int m = A.size();
int n = A[0].size();
int ret = m*(1 << (n-1));//第一列的权重
for(int line = 1; line < n; line++)
{
int flag = 0;
for(int row = 0; row < m; row++)
{
if(A[row][0] == 1)
{
flag += A[row][line];
}else{
flag += 1 - A[row][line];
}
}
int k = max(flag , m - flag);
ret += k*(1 << (n - line - 1));
}
return ret;
}
};