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

C++ में बाइनरी मैट्रिक्स में सभी 1s से बने सबसे बड़े '+' का आकार खोजें


इस समस्या में, हमें NxN बाइनरी मैट्रिक्स bin[][] दिया गया है। हमारा कार्य बाइनरी मैट्रिक्स में सभी 1s से बने सबसे बड़े '+' का आकार खोजना है।

आइए एक उदाहरण से इस समस्या को समझते हैं,

इनपुट

0 1 1 1 1 1 0 1 0

आउटपुट

5

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

इस समस्या का एक सरल समाधान सबसे बड़े '+' को खोजना है जिसके लिए हमें मैट्रिक्स में एक बिंदु के लिए एक दिशा में 1s की अधिकतम संख्या ज्ञात करनी होगी जो दिए गए 1 के लिए सभी चार दिशाओं में समान होनी चाहिए। इसके लिए, हम बिंदु के प्रत्येक तरफ के लिए एक मैट्रिक्स बनाएंगे यानी 4। प्रत्येक दिए गए तत्व के लिए लगातार 1s की संख्या स्टोर करेगा। सभी इंडेक्स मानों के लिए, हम अधिकतम मान ढूंढेंगे जो सभी चार दिशाओं में लगातार 1s का न्यूनतम है।

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

उदाहरण

#include <iostream> using namespace std; #define N 7 int findLargestPlusSize(int mat[N][N]) {    int conOneLeft[N][N], conOneRight[N][N], conOneTop[N][N], conOneBottom[N][N];    for (int i = 0; i < N; i++) {       conOneTop[0][i] = mat[0][i];       conOneBottom[N - 1][i] = mat[N - 1][i];       conOneLeft[i][0] = mat[i][0];       conOneRight[i][N - 1] = mat[i][N - 1];    }    for (int i = 0; i < N; i++) {       for (int j = 1; j < N; j++) {          if (mat[i][j] == 1)             conOneLeft[i][j] = conOneLeft[i][j - 1] + 1;          else             conOneLeft[i][j] = 0;          if (mat[j][i] == 1)             conOneTop[j][i] = conOneTop[j - 1][i] + 1;          else             conOneTop[j][i] = 0;          j = N - 1 - j;          if (mat[j][i] == 1)             conOneBottom[j][i] = conOneBottom[j + 1][i] + 1;          else             conOneBottom[j][i] = 0;          if (mat[i][j] == 1)             conOneRight[i][j] = conOneRight[i][j + 1] + 1;          else             conOneRight[i][j] = 0;          j = N - 1 - j;       }    }    int maxConOne = 0;    for (int i = 0; i < N; i++) {       for (int j = 0; j < N; j++){          int ConOnes = min(min(conOneTop[i][j],          conOneBottom[i][j]), min(conOneLeft[i][j], conOneRight[i][j]));          if(ConOnes > maxConOne)             maxConOne = ConOnes;       }    }    if (maxConOne)       return (4 * (maxConOne - 1) + 1);    return 0; } int main() {    int mat[N][N] = {       { 1, 0, 1, 1, 1, 1, 0 },       { 1, 0, 1, 0, 1, 1, 1 },       { 1, 1, 1, 0, 1, 1, 0 },       { 0, 0, 0, 0, 1, 0, 0 },       { 1, 0, 1, 1, 1, 1, 1 },       { 1, 1, 1, 0, 1, 1, 1 },       { 1, 0, 0, 0, 1, 0, 0 },    };    cout<<"The size of the largest plus formed by ones is "<<findLargestPlusSize(mat);    return 0; }

आउटपुट

The size of the largest plus formed by ones is 9

  1. C++ में दिए गए बाइनरी ट्री में सबसे बड़ा BST उपट्री खोजें - सेट 1 C++ में दिए गए बाइनरी ट्री में सबसे बड़ा BST उपट्री खोजें - सेट 1

    इस समस्या में, हमें एक बाइनरी ट्री BT दिया गया है। हमारा कार्य दिए गए बाइनरी ट्री में सबसे बड़ा BST उपट्री खोजना है। बाइनरी ट्री डेटा स्टोरेज उद्देश्यों के लिए उपयोग की जाने वाली एक विशेष डेटा संरचना है। एक बाइनरी ट्री में एक विशेष शर्त होती है कि प्रत्येक नोड के अधिकतम दो बच्चे हो सकते हैं। बाइनरी

  1. C++ में बाइनरी ट्री में सबसे गहरा नोड ज्ञात करें C++ में बाइनरी ट्री में सबसे गहरा नोड ज्ञात करें

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है। हमारा कार्य बाइनरी ट्री में सबसे गहरा नोड ज्ञात करना है। बाइनरी ट्री डेटा स्टोरेज उद्देश्यों के लिए उपयोग की जाने वाली एक विशेष डेटा संरचना है। एक बाइनरी ट्री में एक विशेष शर्त होती है कि प्रत्येक नोड के अधिकतम दो बच्चे हो सकते हैं। बाइनरी ट्री में सबस

  1. C++ में दिए गए परफेक्ट बाइनरी ट्री के सभी नोड्स का योग ज्ञात करें C++ में दिए गए परफेक्ट बाइनरी ट्री के सभी नोड्स का योग ज्ञात करें

    मान लीजिए हमारे पास एक धनात्मक पूर्णांक L है, जो परफेक्ट बाइनरी ट्री में स्तरों की संख्या दर्शाता है। इस परफेक्ट बाइनरी ट्री में पत्ती नोड्स को 1 से n तक संख्या दी गई है। जहां n पत्ती नोड्स की संख्या है। पैरेंट नोड बच्चों का योग है। हमारा कार्य इस परफेक्ट बाइनरी ट्री के सभी नोड्स का योग प्रिंट करने