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

C++ में दिए गए मैट्रिक्स में 1s के वर्ग सबमैटिक्स की संख्या गिनने का कार्यक्रम

मान लीजिए कि हमारे पास 2d बाइनरी मैट्रिक्स है, हमें सभी 1 s के साथ सबमैट्रिस की कुल संख्या ज्ञात करनी है।

तो, अगर इनपुट पसंद है

1 1 0
1 1 0
0 0 1

तो आउटपुट 10 होगा, क्योंकि वहां पांच 1 x 1 मैट्रिक्स, दो 2 x 1 मैट्रिक्स है। दो 1 x 2 मैट्रिक्स। और एक 2 x 2 मैट्रिक्स।

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

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int getAns(vector& a) {
      int ret = 0;
      int n = a.size();
      vector<int> v(n);
      stack<int> st;
      for (int i = 0; i < a.size(); i++) {
         while (!st.empty() && a[st.top()] >= a[i])
            st.pop();
         if(!st.empty()) {
            int prev = st.top();
            v[i] += v[prev];
            v[i] += a[i] * (i - prev);
         }
         else{
            v[i] += a[i] * (i + 1);
         }
         st.push(i);
      }
      for (int i : v) {
         ret += i;
      }
      return ret;
   }
   int solve(vector<vector<int>>& v) {
      int ret = 0;
      int n = v.size();
      int m = n ? v[0].size() : 0;
      vector<int> temp(m);
      for (int i = 0; i < n; i++) {
         for (int j = 0; j < m; j++) {
            temp[j] = v[i][j] ? temp[j] + 1 : 0;
         }
         ret += getAns(temp);
      }
      return ret;
   }
};
int solve(vector<vector<int>>& matrix) {
   return (new Solution())->solve(matrix);
}
main(){
   vector<vector> matrix = {
      {1, 1, 0},
      {1, 1, 0},
      {0, 0, 1}
   };
   cout << solve(matrix);
}

इनपुट

{{1, 1, 0},{1, 1, 0},{0, 0, 1}};

आउटपुट

10

  1. C++ प्रोग्राम दिए गए ग्राफ़ में ब्रिज किनारों की संख्या का पता लगाने के लिए

    मान लीजिए, हमें एक अभारित, अप्रत्यक्ष ग्राफ दिया गया है जिसमें n कोने और m किनारे हैं। ग्राफ़ में ब्रिज का किनारा वह किनारा होता है जिसके हटाने से ग्राफ़ डिस्कनेक्ट हो जाता है। हमें दिए गए आलेख में ऐसे आलेखों की संख्या ज्ञात करनी है। ग्राफ़ में समानांतर किनारे या सेल्फ़-लूप नहीं होते हैं। इसलिए, यद

  1. सी ++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए संचालन की संख्या की गणना करने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी मैट्रिक्स है। अब एक ऑपरेशन पर विचार करें जहां हम एक सेल लेते हैं और इसे और उसके सभी पड़ोसी कोशिकाओं (ऊपर, नीचे, बाएं, दाएं) को फ्लिप करते हैं। हमें आवश्यक संक्रियाओं की न्यूनतम संख्या ज्ञात करनी होगी जैसे कि मैट्रिक्स में केवल 0s हों। अगर कोई समाधान नहीं है, तो -1 लौ

  1. पायथन में दिए गए बाइनरी मैट्रिक्स में वर्ग सबमैट्रिस की संख्या गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास 2D बाइनरी मैट्रिक्स है। हमें मैट्रिक्स में मौजूद वर्ग सबमैट्रिस की कुल संख्या ज्ञात करनी है, जहां सभी तत्व 1 हैं। तो, अगर इनपुट पसंद है 0 1 1 0 1 1 तो आउटपुट 5 होगा, क्योंकि एक (2 × 2) वर्ग है, और चार (1 × 1) वर्ग हैं इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - यद