ধরুন n এবং m আছে যা একটি ম্যাট্রিক্সের মাত্রা। এই শূন্য দ্বারা আরম্ভ করা হয়. এবং সূচকগুলি দেওয়া হয় যেখানে সূচক [i] =[ri, ci]। [ri, ci] এর প্রতিটি জোড়ার জন্য আমাদের সারি ri এবং কলাম ci-এর সমস্ত কক্ষকে 1 দ্বারা বৃদ্ধি করতে হবে। আউটপুটটি সমস্ত সূচকে বৃদ্ধি প্রয়োগ করার পরে ম্যাট্রিক্সে বিজোড় মান সহ কক্ষের সংখ্যা হবে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- বিজোড় শুরু করুন :=0, এবং x :=ম্যাট্রিক্সের সারি গণনা
- একটি ম্যাট্রিক্স ম্যাট তৈরি করুন
- আমি 0 থেকে x
- পরিসরে
- r =ইনপুট[i, 0], c =ইনপুট[i, 1], j-এর জন্য 0 থেকে m – 1
- mat[r, j] :=mat[r, j] + 1
- 0 থেকে n – 1
- পরিসরে j এর জন্য
- mat[j, c] :=mat[j, c] + 1
- পরিসরে
- j এর জন্য :=0 থেকে m – 1
- বিজোড় :=odd + mat[i, j] bitwise অথবা 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