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

C++ में सभी के साथ वर्गाकार सबमैट्रिस गिनें

मान लीजिए कि हम एक द्विआधारी आव्यूह है, जिसका आकार m x n है। हमें सभी 1s के साथ वर्ग सबमैट्रिस की संख्या गिननी है। तो अगर मैट्रिक्स की तरह है -

<वें शैली ="पृष्ठभूमि-रंग:आरजीबी (255, 255, 255);">1
0 1 1
1 1 1 1
0 1 1 1

तो 15 वर्ग होंगे। एकल वर्ग के 10 वर्ग, चार वर्ग के 4 वर्ग, और नौ वर्ग वाला 1 वर्ग।

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

  • उत्तर सेट करें:=0, n:=पंक्ति गणना और m:=स्तंभ गणना
  • मैं के लिए 0 से मी - 1 की सीमा में
    • उत्तर:=उत्तर + मैट्रिक्स[एन -1, आई]
  • मैं के लिए 0 से n - 1 की सीमा में
    • उत्तर:=उत्तर + मैट्रिक्स[i, m - 1]
  • उत्तर:=उत्तर – मैट्रिक्स[n – 1, m-1]
  • के लिए मैं श्रेणी n - 2 में 0 से नीचे
    • जे के लिए एम -2 से 0 तक नीचे
      • यदि मैट्रिक्स[i, j] =1, तो
        • matrix[i, j] :=1 + न्यूनतम (मैट्रिक्स[i + 1, j + 1], मैट्रिक्स[i, j + 1], मैट्रिक्स[i + 1, j])
      • अन्यथा मैट्रिक्स[i,j] :=0
      • उत्तर:=उत्तर + मैट्रिक्स[i, j]
  • वापसी उत्तर

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int countSquares(vector<vector<int>>& matrix) {
      int ans = 0;
      int n = matrix.size();
      int m = matrix[0].size();
      for(int i = 0; i < m; i++)ans += matrix[n-1][i];
      for(int i = 0; i < n; i++)ans += matrix[i][m-1];
      ans -= matrix[n-1][m-1];
      for(int i = n - 2;i >= 0; i--){
         for(int j = m-2 ;j >= 0; j--){
            matrix[i][j] = matrix[i][j] == 1? 1 + min({matrix[i+1][j+1],matrix[i] [j+1],matrix[i+1][j]}) : 0;
            ans += matrix[i][j];
         }
      }
      return ans;
   }
};
main(){
   vector<vector<int>> v = {{0,1,1,1},{1,1,1,1},{0,1,1,1}};
   Solution ob;
   cout << (ob.countSquares(v));
}

इनपुट

[[0,1,1,1],
[1,1,1,1],
[0,1,1,1]]

आउटपुट

15

  1. सी ++ में सभी समान तत्वों के साथ अधिकतम वर्ग उप-मैट्रिक्स ढूँढना

    इस समस्या में, हमें एक N*N मैट्रिक्स मैट [] दिया जाता है। हमारा काम है सभी समान तत्वों के साथ अधिकतम वर्ग उप-मैट्रिक्स ढूँढना । इस समस्या में, हमें दिए गए मैट्रिक्स से एक उप-मैट्रिक्स का अधिकतम आकार खोजने की आवश्यकता है, जिसके सभी तत्व समान हैं। समस्या को समझने के लिए एक उदाहरण लेते हैं, Input: m

  1. X के सभी संभावित मानों की गणना इस प्रकार करें कि C++ में A % X =B

    दो पूर्णांक A और B और एक संख्या X को देखते हुए। लक्ष्य उन मानों की गणना करना है जो X के पास हो सकते हैं ताकि A%X=B हो। उपरोक्त समीकरण के लिए यदि, A==B तो X के अनंत मान संभव हैं, इसलिए -1 लौटाएं। यदि ए बी तो परिणाम के रूप में (एबी) के भाजक की गणना करें। उदाहरण के लिए इनपुट A=5, B=2 आउटपुट Count of

  1. C++ में कुल n अंक के साथ m कोलिनियर वाले त्रिभुजों की संख्या

    हमें दो चर n और m दिए गए हैं जो एक 2D तल पर बिंदुओं की संख्या को निरूपित करते हैं। n बिंदुओं में से, m बिंदु संरेख हैं। लक्ष्य इन n बिंदुओं का उपयोग करके बनाए जा सकने वाले त्रिभुजों की संख्या ज्ञात करना है। समरेख बिंदु - एक ही रेखा पर स्थित बिंदु संरेख कहलाते हैं। बिंदु A और B संरेख हैं। दिया गय