翻转矩阵后的得分
题目

思路
逐列查看,二选一增加总和。
代码
class Solution {
public:
int matrixScore(vector<vector<int>>& A) {
int n=A.size();
int m=A[0].size();
vector<bool> f(n,0);
for(int i=0;i<n;i++)
f[i]=A[i][0]^1;
int ans=(1<<(m-1))*n;
for(int j=1;j<m;j++)
{
int cnt=0;
for(int i=0;i<n;i++)
if(A[i][j]^f[i]) cnt++;
cnt=max(cnt,n-cnt);
ans+=(1<<(m-j-1))*cnt;
}
return ans;
}
};
本文介绍了一种针对矩阵翻转问题的优化算法,通过逐列检查并选择最优方案来最大化矩阵得分。算法首先初始化得分,然后遍历矩阵的每一列,计算翻转或不翻转该列所能获得的最大收益,最终返回累计的最大得分。

239

被折叠的 条评论
为什么被折叠?



