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

C++ में सभी 1s के साथ अधिकतम आकार आयत बाइनरी सब-मैट्रिक्स

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

इसके लिए हमें 2D मैट्रिक्स प्रदान किया जाएगा जिसमें शून्य और एक होंगे। हमारा काम केवल वाले वाले सबसे बड़े 2D मैट्रिक्स सबसेट को खोजना है।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
#define R 4
#define C 4
//finding the maximum area
int maxHist(int row[]) {
   stack<int> result;
   int top_val;
   int max_area = 0;
   int area = 0;
   int i = 0;
   while (i < C) {
      if (result.empty() || row[result.top()] <= row[i])
         result.push(i++);
      else {
         top_val = row[result.top()];
         result.pop();
         area = top_val * i;
      if (!result.empty())
      area = top_val * (i - result.top() - 1);
      max_area = max(area, max_area);
   }
}
while (!result.empty()) {
   top_val = row[result.top()];
   result.pop();
   area = top_val * i;
   if (!result.empty())
      area = top_val * (i - result.top() - 1);
      max_area = max(area, max_area);
   }
   return max_area;
}
 //returning area of largest required subset
int maxRectangle(int A[][C]) {
   int result = maxHist(A[0]);
   for (int i = 1; i < R; i++) {
      for (int j = 0; j < C; j++)
      if (A[i][j])
      A[i][j] += A[i - 1][j];
      result = max(result, maxHist(A[i]));
   }
   return result;
}
int main() {
   int A[][C] = {
      { 0, 1, 1, 0 },{ 1, 1, 1, 1 },{ 1, 1, 1, 1 },{ 1, 1, 0, 0 },
   };
   cout << "Area of maximum rectangle is " <<
   maxRectangle(A);
   return 0;
}

आउटपुट

Area of maximum rectangle is 8

  1. C++ में बाइनरी ट्री की अधिकतम चौड़ाई

    समस्या कथन एक बाइनरी ट्री को देखते हुए, दिए गए ट्री की अधिकतम चौड़ाई प्राप्त करने के लिए एक फ़ंक्शन लिखें। एक पेड़ की चौड़ाई सभी स्तरों की अधिकतम चौड़ाई होती है। पेड़ के नीचे विचार करें -       10      / \     7   4    / \   \   9 &

  1. C++ में दिए गए योग के साथ अधिकतम आकार का उपसमुच्चय

    समस्या कथन एन तत्वों और योग की एक सरणी को देखते हुए। हमें अधिकतम आकार के सबसेट का आकार खोजने की जरूरत है जिसका योग दिए गए योग के बराबर है उदाहरण यदि इनपुट सरणी arr ={ 2, 3, 5, 10} और योग =20 है तो आउटपुट 4 के रूप में होगा - 2 + 3 + 5 + 10 =20 जो दिए गए योग के बराबर है एल्गोरिदम हम इस समस्या को ह

  1. C++ में 0 योग के साथ सभी उप-सरणी मुद्रित करें

    इस समस्या में, हमें पूर्णांक मानों की एक सरणी दी जाती है और हमें इस सरणी से उन सभी उप-सरणी को प्रिंट करना होता है जिनका योग 0 के बराबर होता है। आइए विषय को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं, Input: array = [-5, 0, 2, 3, -3, 4, -1] Output: Subarray with sum 0 is from 1 to 4. Subarray with