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