Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เซลล์ที่มีค่าคี่ในเมทริกซ์ใน C++


สมมติว่ามี n และ m ซึ่งเป็นมิติของเมทริกซ์ สิ่งเหล่านี้เริ่มต้นโดยศูนย์ และให้ดัชนีโดยที่ indices[i] =[ri, ci] สำหรับ [ri, ci] แต่ละคู่ เราต้องเพิ่มเซลล์ทั้งหมดในแถว ri และคอลัมน์ ci ขึ้น 1 ผลลัพธ์จะเป็นจำนวนเซลล์ที่มีค่าคี่ในเมทริกซ์หลังจากนำส่วนเพิ่มไปใช้กับดัชนีทั้งหมด

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • เริ่มต้นเลขคี่ :=0 และ x :=จำนวนแถวของเมทริกซ์
  • สร้างเมทริกซ์แมท
  • สำหรับ i ในช่วง 0 ถึง x
    • r =อินพุต[i, 0], c =อินพุต[i, 1],
    • สำหรับ j ในช่วง 0 ถึง m – 1
      • mat[r, j] :=mat[r, j] + 1
    • สำหรับ j ในช่วง 0 ถึง n – 1
      • mat[j, c] :=mat[j, c] + 1
  • สำหรับ i ในช่วง 0 ถึง n – 1
    • สำหรับ j :=0 ถึง m – 1
      • odd :=odd + mat[i, j] ระดับบิตหรือ 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