Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में मैट्रिक्स में विषम मान वाले सेल्स


मान लें n और m हैं जो एक मैट्रिक्स के आयाम हैं। ये शून्य से इनिशियलाइज़्ड हैं। और इंडेक्स दिए गए हैं जहां indices[i] = [ri, ci]। [ri, ci] के प्रत्येक जोड़े के लिए हमें पंक्ति ri और स्तंभ ci में सभी सेल्स को 1 से बढ़ाना है। आउटपुट सभी इंडेक्स पर वृद्धि लागू करने के बाद मैट्रिक्स में विषम मान वाले सेल्स की संख्या होगी।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −

  • odd := 0 इनिशियलाइज़ करें, और x := मैट्रिक्स की पंक्ति संख्या
  • एक मैट्रिक्स mat बनाएं
  • i को 0 से x की रेंज में लिए
    • r = input[i, 0], c = input[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] बिटवाइज OR 1 के साथ
  • odd लौटाएं

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें −

#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

  1. C++ में स्पाइरल मैट्रिक्स III (Spiral Matrix III) C++ में स्पाइरल मैट्रिक्स III (Spiral Matrix III)

    मान लीजिए हमारे पास R पंक्तियों और C स्तंभों वाला एक 2-आयामी ग्रिड है, हम (r0, c0) से शुरू करते हैं और पूर्व की ओर मुख किए होते हैं। यहां, ग्रिड का उत्तर-पश्चिम कोना पहली पंक्ति और स्तंभ पर है, और दक्षिण-पूर्व कोना अंतिम पंक्ति और स्तंभ पर है। हम इस ग्रिड में हर स्थिति को देखने के लिए दक्षिणावर्त स

  1. - C++ में मैट्रिक्स में दिए गए गुणनफल वाली जोड़ी जांचें

    समस्या विवरण N×M मैट्रिक्स और गुणनफल K दिया गया है। जांचें कि क्या मैट्रिक्स में कोई जोड़ी है जिसका गुणनफल K है। उदाहरण: 4×4 मैट्रिक्स, K=42 → जोड़ी (6, 7) मौजूद है हल: हैशिंग मैट्रिक्स ट्रैवर्स करते हुए हैश सेट में तत्व डालें प्रत्येक तत्व के लिए: यदि K वर्तमान से विभाज्य है और K/वर्तमान सेट मे

  1. - C++ में मैट्रिक्स व्युत्क्रमणीय (Invertible) है या नहीं जांचें

    समस्या विवरण एक मैट्रिक्स व्युत्क्रमणीय है यदि उसका निर्धारक (determinant) शून्येतर है। व्युत्क्रम सूत्र: M⁻¹ = adj(M) / |M| एल्गोरिदम पुनरावर्ती रूप से निर्धारक की गणना करें कोफैक्टर मैट्रिक्स बनाएं यदि निर्धारक ≠ 0 → व्युत्क्रमणीय उदाहरण कोड #include <iostream> #define N 4 using namespa