কম্পিউটার টিউটোরিয়াল

C++-এ সব ১ সম্বলিত সর্বোচ্চ আকারের বাইনারি সাব-ম্যাট্রিক্স (Maximum size rectangle binary sub-matrix with all 1s)

এই টিউটোরিয়ালে আমরা ০ এবং ১ সম্বলিত ২D ম্যাট্রিক্স থেকে সব ১ সম্বলিত সর্বোচ্চ ২D ম্যাট্রিক্স সাবসেট বের করব।

উদাহরণ

#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++-এ এক ডিলিশন সহ সর্বোচ্চ সাবঅ্যারে সম

  2. C++-এ বাইনারি ট্রির সর্বোচ্চ প্রস্থ (Maximum Width of a Binary Tree)

  3. C++-এ দেওয়া যোগফলের সাথে সর্বোচ্চ আকারের সাবসেট

  4. শূন্য সম যোগফল वाले সব সাবঅ্যারে প্রিন্ট করা C++-তে