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

C++ में बाइनरी मैट्रिक्स में अधिकतम दशमलव मान पथ

कार्य को देखते हुए अधिकतम पूर्णांक मान ज्ञात करना है जो किसी दिए गए वर्ग बाइनरी सरणी के शीर्ष बाएं तत्व से नीचे दाएं तत्व तक पथ में यात्रा करते समय प्राप्त किया जा सकता है, जो कि इंडेक्स [0] [0] से इंडेक्स तक शुरू होता है। [एन -1] [एन -1]।

पथ को कवर करते समय हम केवल दाएँ ([i][j + 1]) या नीचे ([i + 1][j])

जा सकते हैं

ट्रैवर्स किए गए पथ के बिट्स का उपयोग करके पूर्णांक मान की गणना की जाएगी।

आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है -

इनपुट

m = {
   {1, 1, 1, 1},
   {0, 0, 1, 0},
   {1, 0, 1, 1},
   {0, 1, 1, 1}
}

आउटपुट

127

स्पष्टीकरण

हमने जो रास्ता अपनाया वह है:[0, 0] →[0, 1] → [0, 2] → [1, 2] → [2, 2] → [3, 2] →[3, 3]

इसलिए दशमलव मान बन जाता है =1*(2 0 ) + 1*(2 1 ) + 1*(2 2 ) + 1*(2 3 ) + 1*(2 4 ) + 1*(2 5 ) + 1*(2 6 )

=1 + 2 + 4 + 8 + 16 + 32 + 64

=127

इनपुट

m = {
   {1, 0, 1, 1},
   {0, 0, 1, 0},
   {1, 0, 0, 1},
   {0, 1, 1, 1}
}

आउटपुट

109

निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है

  • सबसे पहले #define का उपयोग करके शीर्ष पर वर्गाकार आव्यूह की भुजा के आकार को परिभाषित करें।

  • मुख्य () फ़ंक्शन में मैट्रिक्स को स्टोर करने के लिए एक 2D सरणी int m[][4] बनाएं और Max(m, 0, 0, 0)

    को कॉल करें।
  • मैक्स () फंक्शन में पहले चेक करें कि क्या (i>=साइड || j>=साइड)। अगर ऐसा है, तो इसका मतलब है कि हम मैट्रिक्स सीमा से बाहर हैं और 0.

  • एक नया वेरिएबल int ans बनाएं और ans =max(Max(m, i, j+1, pw+1), Max(m, i+1, j, pw+1)) डालें।

  • फिर जांचें कि क्या (एम [i] [जे] ==1)। अगर ऐसा है, तो पाउ (2, पीडब्ल्यू) + उत्तर दें।

  • अन्यथा बस उत्तर दें।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
#define side 4
// pw is power of 2
int Max(int m[][side], int i, int j, int pw){
   // Out of boundary
   if (i >= side || j >= side )
      return 0;
   int ans = max(Max(m, i, j+1, pw+1), Max(m, i+1, j, pw+1));
   if (m[i][j] == 1)
      return pow(2, pw) + ans;
   else
      return ans;
}
//main function
int main(){
   int m[][4] = {{1, 1, 1, 1},{0, 0, 1, 0},{1, 0, 1, 1},{0, 1, 1, 1}};
   cout << Max(m, 0, 0, 0);
   return 0;
}

आउटपुट

127

  1. C++ में बाइनरी ट्री की अधिकतम चौड़ाई

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है, हमें दिए गए ट्री की अधिकतम चौड़ाई प्राप्त करने के लिए एक फ़ंक्शन को परिभाषित करना होगा। यहां एक पेड़ की चौड़ाई सभी स्तरों के बीच अधिकतम चौड़ाई है। हम विचार करेंगे कि बाइनरी ट्री में पूर्ण बाइनरी ट्री के समान संरचना होती है, लेकिन कुछ नोड शून्य होते हैं। एक स

  1. C++ में अधिकतम बाइनरी ट्री

    मान लीजिए कि हमारे पास एक पूर्णांक सरणी है। उस सरणी के सभी तत्व अद्वितीय हैं। इस सरणी पर अधिकतम वृक्ष निर्माण को निम्नानुसार परिभाषित किया गया है - जड़ सरणी में अधिकतम संख्या धारण करेगा। लेफ्ट सबट्री सबएरे के बायीं ओर से निर्मित अधिकतम ट्री है जिसे अधिकतम संख्या से विभाजित किया जाता है। दाय

  1. C++ में एक बाइनरी ट्री में अधिकतम पथ योग

    इस समस्या में, हमें एक बाइनरी ट्री दिया जाता है जिसमें प्रत्येक नोड में एक मान होता है। हमारा काम एक बाइनरी ट्री की दो पत्तियों के बीच अधिकतम पथ योग खोजने के लिए एक प्रोग्राम बनाना है। यहां, हमें एक लीफ नोड से दूसरे लीफ नोड के लिए पथ फॉर्म ढूंढना होगा जो अधिकतम मूल्यों को प्रदान करेगा। इस अधिकतम यो