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

C++ में एक मैट्रिक्स में वर्ग की अधिकतम पार्श्व लंबाई ज्ञात कीजिए


इस समस्या में, हमें n आकार का एक 2-D मैट्रिक्स mat[][] दिया गया है, n एक विषम संख्या है। हमारा काम मैट्रिक्स में एक वर्ग की अधिकतम पार्श्व लंबाई ज्ञात करना है।

समस्या का विवरण - हमें वर्ग मैट्रिक्स की लंबाई खोजने की जरूरत है जिसका परिधि मान समान है और यह मैट्रिक्स के समान केंद्र साझा करता है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट

mat[][] = {
   {2, 4, 6, 6, 5},
   {1, 7, 7, 7, 3},
   {5, 7, 0, 7, 1},
   {3, 7, 7, 7, 1},
   {2, 0, 1, 3, 2}
}

आउटपुट

3

समाधान दृष्टिकोण

समस्या का एक सरल समाधान मैट्रिक्स के केंद्र तत्व को ढूंढना है क्योंकि यह एक विषम मैट्रिक्स है, केंद्र तत्व इंडेक्स (एन/2, एन/2) पर होगा। केंद्र खोजने के बाद हम सभी 2 डी उप- इसके चारों ओर मैट्रिसेस जो जांच करेगा कि क्या इसके सभी तत्व समान हैं।

केंद्र से दूर इंडेक्स पर सबमैट्रिक्स में इंडेक्स (एन/2 - 1) से (एन/2 + 1) तक पंक्ति (एन/2 - 1) और (एन/2 + 1) का एक तत्व होगा। इसके परिमाप में सूचकांक (n/2 - 1) से (n/2 + 1) तक कॉलम (n/2 - 1) और (n/2 + 1) के अवयव भी शामिल हैं। हमें यह जांचने की आवश्यकता है कि 0 से n/2 तक के किसी भी मान के लिए उप-मैट्रिक्स में सभी परिधि तत्व समान हैं या नहीं।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,

उदाहरण

#include <iostream>
#define n 5
using namespace std;
int findMaxSideSquare(int matrix[][n]) {
   int squareLen = 1;
   for (int i = 0; i < n / 2; i++) {
      int sideVal = matrix[i][i];
      bool isSquare = true;
      for (int j = i; j < n - i; j++) {
         if (matrix[i][j] != sideVal)
            isSquare = false;
         if (matrix[n - i - 1][j] != sideVal)
            isSquare = false;
         if (matrix[j][i] != sideVal)
            isSquare = false;
         if (matrix[j][n - i - 1] != sideVal)
            isSquare = false;
      }
      if (isSquare)
         squareLen = n - 2 * i;
   }
   return squareLen;
}
int main() {
   int mat[n][n] = {
      {2, 4, 6, 6, 5},
      {1, 7, 7, 7, 3},
      {5, 7, 0, 7, 1},
      {3, 7, 7, 7, 1},
      {2, 0, 1, 3, 2}
   };
   cout<<"The maximum side length of square in a Matrix is "<<findMaxSideSquare(mat);
   return 0;
}

आउटपुट

The maximum side length of square in a Matrix is 3
है
  1. सी ++ में मैट्रिक्स में प्रत्येक कॉलम का अधिकतम तत्व खोजें

    मान लें कि हमारे पास एक मैट्रिक्स है, हमारा काम उस मैट्रिक्स के प्रत्येक कॉलम के अधिकतम तत्व को ढूंढना और उन्हें प्रिंट करना है। यह कार्य सरल है। प्रत्येक कॉलम के लिए, अधिकतम रीसेट करें, और अधिकतम तत्व ढूंढें, और इसे प्रिंट करें। आइए बेहतर समझ के लिए कोड देखें। उदाहरण #include<iostream> #defin

  1. सी ++ का उपयोग कर मैट्रिक्स में अधिकतम योग के साथ कॉलम खोजें।

    मान लीजिए कि हमारे पास एम एक्स एन आकार का एक मैट्रिक्स है। हमें कॉलम ढूंढना है, जिसमें अधिकतम योग है। इस कार्यक्रम में हम कुछ मुश्किल दृष्टिकोण का पालन नहीं करेंगे, हम सरणी कॉलम-वार को पार करेंगे, फिर प्रत्येक कॉलम का योग प्राप्त करेंगे, यदि योग अधिकतम है, तो योग और कॉलम इंडेक्स प्रिंट करें। उदाहरण

  1. पायथन में बाइनरी मैट्रिक्स में अधिकतम पथ लंबाई पाएं

    इस समस्या में, हमें m X ​​n आकार का एक वर्ग मैट्रिक्स मैट [] [] दिया जाता है जिसमें प्रत्येक तत्व 0 या 1 होता है। यदि किसी तत्व का मान 1 है, तो इसका मतलब है कि यह जुड़ा हुआ है, यदि मान 0 है, तो इसका मतलब यह है जुड़ा नहीं है। हमारा काम बाइनरी मैट्रिक्स में अधिकतम पथ लंबाई खोजना है। समस्या का विवरण -