Computer >> Máy Tính >  >> Lập trình >> C ++

Các ô có Giá trị Lẻ trong Ma trận trong C ++

Giả sử có n và m là kích thước của ma trận. Chúng được khởi tạo bởi các số không. Và các chỉ số được đưa ra trong đó chỉ số [i] =[ri, ci]. Đối với mỗi cặp [ri, ci], chúng ta phải tăng tất cả các ô trong hàng ri và cột ci lên 1. Đầu ra sẽ là số ô có giá trị lẻ trong ma trận sau khi áp dụng gia số cho tất cả các chỉ số.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Khởi tạo số lẻ:=0 và x:=số hàng của ma trận
  • tạo một tấm ma trận
  • cho tôi trong phạm vi từ 0 đến x
    • r =input [i, 0], c =input [i, 1],
    • cho j trong phạm vi từ 0 đến m - 1
      • mat [r, j]:=mat [r, j] + 1
    • cho j trong phạm vi từ 0 đến n - 1
      • mat [j, c]:=mat [j, c] + 1
  • cho tôi trong phạm vi từ 0 đến n - 1
    • cho j:=0 đến m - 1
      • lẻ:=lẻ + mat [i, j] theo chiều dọc hoặc với 1
  • trả về số lẻ

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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);
}

Đầu vào

2
3
{{0,1},{1,1}}

Đầu ra

6