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

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

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

केंद्र से इंडेक्स i दूर उप-मैट्रिक्स में पंक्ति (n/2 - 1) और (n/2 + 1) के तत्व इंडेक्स (n/2 - 1) से (n/2 + 1) तक होंगे। साथ ही कॉलम (n/2 - 1) और (n/2 + 1) के तत्व इंडेक्स (n/2 - 1) से (n/2 + 1) तक इसकी परिधि पर शामिल होंगे। हमें जाँचने की आवश्यकता है कि क्या i के किसी भी मान के लिए 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. - C++ प्रोग्राम: मैट्रिक्स के प्रत्येक कॉलम का अधिकतम तत्व ज्ञात करना

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

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

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

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

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