मान लीजिए कि n और m हैं जो एक मैट्रिक्स के आयाम हैं। इन्हें शून्य से प्रारंभ किया जाता है। और सूचकांक दिए गए हैं जहां सूचकांक [i] =[री, सीआई]। [ri, ci] की प्रत्येक जोड़ी के लिए हमें पंक्ति ri और स्तंभ ci में सभी कक्षों को 1 से बढ़ाना होगा। आउटपुट सभी सूचकांकों में वृद्धि लागू करने के बाद मैट्रिक्स में विषम मानों वाले कक्षों की संख्या होगी।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- अजीब प्रारंभ करें:=0, और x:=मैट्रिक्स की पंक्ति गणना
- मैट्रिक्स मैट बनाएं
- मैं के लिए 0 से x की सीमा में
- r =इनपुट [i, 0], c =इनपुट [i, 1],
- जे के लिए 0 से मी - 1 की सीमा में
- mat[r, j] :=mat[r, j] + 1
- जे के लिए 0 से n - 1 की सीमा में
- mat[j, c] :=mat[j, c] + 1
- मैं के लिए 0 से n - 1 की सीमा में
- जे के लिए:=0 से मी - 1
- विषम:=विषम + चटाई[i, j] बिटवाइज़ या 1 के साथ
- जे के लिए:=0 से मी - 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