কম্পিউটার

C++ এ সর্বোচ্চ স্কোয়ার


ধরুন আমাদের একটি 2D বাইনারি ম্যাট্রিক্স আছে যা 0 এবং 1 দিয়ে ভরা। আমাদের সবচেয়ে বড় বর্গ খুঁজে বের করতে হবে যেখানে শুধুমাত্র 1 আছে এবং এর ক্ষেত্রফল ফেরত দিতে হবে। তাই ম্যাট্রিক্স যদি −

এর মত হয়
1 0 1 0 0
1 0 1 1 0
1 1 1 1 1
1 0 0 1 0

তাহলে আউটপুট হবে 4

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • উত্তর :=0, n :=সারির সংখ্যা, c :=সারির সংখ্যা

  • যদি n 0 হয়, তাহলে 0 ফেরত দিন

  • অর্ডারের আরেকটি ম্যাট্রিক্স তৈরি করুন (n x c)

  • 0 থেকে n – 1

    রেঞ্জের i জন্য
    • j-এর জন্য 0 থেকে c – 1

      পরিসরে
      • m[i, j] :=ম্যাট্রিক্স[i, j]

      • উত্তর :=সর্বাধিক m[i, j] এবং ans

  • j-এর জন্য 0 থেকে c – 1

    পরিসরে
    • যদি m[i, j] 0 না হয়, তাহলে

      • m[i, j] :=1 + সর্বনিম্ন m[i + 1, j], m[i, j-1], m[i + 1, j-1],

    • উত্তর :=সর্বাধিক m[i, j] এবং ans

  • উত্তর*উত্তর

    ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

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

ইনপুট

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

আউটপুট

4

  1. C++ এ একটি বর্গক্ষেত্রের একটি পরিক্রমাকৃত বৃত্তের ক্ষেত্রফল

  2. C++ অ্যাডাম নম্বর

  3. C++ এ বর্গক্ষেত্রের জন্য প্রোগ্রাম

  4. C++ এ NaN কি?