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

सभी 1s . के साथ अधिकतम आकार वर्ग सबमैट्रिक्स


जब एक बाइनरी मैट्रिक्स दिया जाता है, तो हमारा काम एक वर्ग मैट्रिक्स खोजना होता है जिसके सभी तत्व 1 होते हैं।

इस समस्या के लिए, हम एक सहायक आकार का मैट्रिक्स बनाएंगे, जिसका क्रम दिए गए मैट्रिक्स के समान है। यह आकार मैट्रिक्स प्रत्येक प्रविष्टि में प्रतिनिधित्व करने में मदद करेगा आकार [i, j], सभी 1s के साथ एक वर्ग मैट्रिक्स का आकार है। उस आकार के मैट्रिक्स से, हम सबसे बड़े वर्ग मैट्रिक्स का आकार प्राप्त करने के लिए अधिकतम संख्या प्राप्त करेंगे।

इनपुट और आउटपुट

Input:
The binary matrix.
0 1 1 0 1
1 1 0 1 0
0 1 1 1 0
1 1 1 1 1
0 0 0 0 0

Output:
The largest submatrix with all 1’s.


सभी 1s . के साथ अधिकतम आकार वर्ग सबमैट्रिक्स 

एल्गोरिदम

subMatWithOne(given matrix)

इनपुट - मुख्य मैट्रिक्स।

आउटपुट - वर्ग मैट्रिक्स को सभी 1 के साथ प्रदर्शित करें, जो सबसे बड़ा है।

Begin
   define subMat whose order is same as given matrix
   copy first row and first column of given matrix to subMat

   for all row i (1 to n), do
      for all column j (1 to n), do
         if matrix[i, j] = 1, then
            subMat[i, j] := 1 + minimum of subMat[i, j-1]
            and subMat[i-1, j-1]
         else
            subMat[i, j] := 0
      done
   done

   maxSize := subMat[0, 0], iMax := 0 and jMax := 0
   for all row i and column j, do
      if maxSize < subMat[i, j], then
         maxSize := subMat[i, j]
         iMax := i, jMax := j
   done

   print sub matrix from row = iMax to (iMax - maxSize), and column jMax to (jMax - maxSize)
End

उदाहरण

#include<iostream>
#define ROW 6
#define COL 5
using namespace std;

int matrix[ROW][COL] =  {
   {0, 1, 1, 0, 1},
   {1, 1, 0, 1, 0},
   {0, 1, 1, 1, 0},
   {1, 1, 1, 1, 0},
   {1, 1, 1, 1, 1},
   {0, 0, 0, 0, 0}
};

int min(int a, int b, int c) {
   return ((a<b?a:b))?((a<c)?a:c):((b<c)?b:c);
}

void subMatWithOne() {
   int subMat[ROW][COL];
   int maxSize, iMax, jMax;

   for(int i = 0; i < ROW; i++)    //copy first row of matrix to sub matrix
      subMat[i][0] = matrix[i][0];

   for(int j = 0; j < COL; j++)    //copy first column of matrix to sub matrix
      subMat[0][j] = matrix[0][j];

   for(int i = 1; i < ROW; i++) {
      for(int j = 1; j < COL; j++) {
         if(matrix[i][j] == 1)    //find minimum of left, top and diagonal element + 1
            subMat[i][j] = min(subMat[i][j-1], subMat[i-1][j], subMat[i-1][j-1]) + 1;
         else
            subMat[i][j] = 0;    //if item is 0, put only 0
      }  
   }

   maxSize = subMat[0][0]; iMax = 0; jMax = 0;
   for(int i = 0; i < ROW; i++) {    //find the order of sub square matrix

      for(int j = 0; j < COL; j++) {
         if(maxSize < subMat[i][j]) {

            maxSize = subMat[i][j];
            iMax = i;
            jMax = j;
         }      
      }                
   }  
 
   cout << "Subsquare matrix: "<<endl;
   for(int i = iMax; i > iMax - maxSize; i--) {    //print the submatrix using max size
      for(int j = jMax; j > jMax - maxSize; j--) {
         cout << matrix[i][j]<<" ";
      }
      cout << endl;
   }
}  
 
int main() {
   subMatWithOne();
} 

आउटपुट

Subsquare matrix:
1 1 1
1 1 1
1 1 1

  1. सीएसएस में पिक्सेल के साथ फ़ॉन्ट आकार सेट करना

    CSS में font-size गुण सेट करने के लिए, आप pixel(px) का भी उपयोग कर सकते हैं। यह तब फायदेमंद होता है जब आपको टेक्स्ट के लिए पिक्सेल सटीकता की आवश्यकता होती है। उदाहरण आइए पिक्सेल के साथ फ़ॉन्ट आकार सेट करने के लिए एक उदाहरण देखें - <!DOCTYPE html> <html> <head> <style> #demo1

  1. सी प्रोग्राम में दिए गए आकार के अधिकतम योग वर्ग उप-मैट्रिक्स को प्रिंट करें।

    NxN के एक मैट्रिक्स को देखते हुए MxM का एक उप-मैट्रिक्स खोजें जहाँ M=1 ऐसा है कि मैट्रिक्स MxM के सभी तत्वों का योग अधिकतम है। मैट्रिक्स NxN के इनपुट में शून्य, धनात्मक और ऋणात्मक पूर्णांक मान हो सकते हैं। उदाहरण Input:    {{1, 1, 1, 1, 1},    {2, 2, 2, 2, 2},    {3,

  1. पायथन का उपयोग करके सभी के साथ वर्ग सबमैट्रिस की संख्या गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास m x n बाइनरी मैट्रिक्स है, हमें यह पता लगाना है कि सभी में कितने वर्ग सबमैट्रिस हैं। तो, अगर इनपुट पसंद है। 0 1 1 1 1 1 1 1 0 1 1 1 तो आउटपुट 15 होगा, क्योंकि भुजा 1 के 10 वर्ग हैं। भुजा 2 के 4 वर्ग और भुजा 3 का 1 वर्ग। तब वर्गों की कुल संख्या =10 + 4 + 1 =15. इसे हल क