C ++中矩阵中具有奇数值的单元格
假设存在n和m,它们是矩阵的维数。这些由零初始化。并且给出索引,其中索引[i]=[ri,ci]。对于每对[ri,ci],我们必须将ri行和ci列中的所有像元都增加1。输出将是对所有索引应用增量后矩阵中具有奇数值的像元数。
为了解决这个问题,我们将遵循以下步骤-
初始化奇数:=0和x:=矩阵的行数
创建矩阵垫
当我的范围是0到x
mat[j,c]:=mat[j,c]+1
mat[r,j]:=mat[r,j]+1
r=输入[i,0],c=输入[i,1],
对于j,范围从0到m–1
对于介于0到n–1的j
对于i,范围为0至n–1
奇数:=奇数+mat[i,j]按位或1
对于j:=0至m–1
返回奇数
示例
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int oddCells(int n, int m, vector<vector<int>>& in) {
int odd = 0;
int x = in.size();
vector < vector <int> > mat(n, vector <int>(m));
for(int i = 0; i < x ;i++){
int r = in[i][0];
int c = in[i][1];
for(int j = 0; j < m; j++){
mat[r][j]++;
}
for(int j = 0; j < n; j++){
mat[j][c]++;
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++)odd += mat[i][j] & 1;
}
return odd;
}
};
main(){
Solution ob;
vector<vector<int>> c = {{0,1},{1,1}};
cout << ob.oddCells(2,3,c);
}输入值
2
3
{{0,1},{1,1}}输出结果
6