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

सी ++ में मैट्रिक्स में अधिकतम पथ योग

इस समस्या में, हमें M*N आकार का एक 2D मैट्रिक्स दिया गया है। हमारा काम एक प्रोग्राम बनाना है जो मैट्रिक्स में अधिकतम पथ योग ढूंढेगा।

यहां, मैट्रिक्स में अधिकतम पथ योग को एक पंक्ति से अंतिम पंक्ति तक सभी तत्वों के योग के रूप में परिभाषित किया गया है। पथ को पार करने के लिए अनुमत चालें नीचे की ओर और विकर्ण चाल हैं। प्रारंभ और समापन बिंदु क्रमशः मैट्रिक्स की पहली और अंतिम पंक्ति का कोई भी तत्व हो सकता है।

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

इनपुट -

matrix [][] =
   3 5 9
   1 7 2
   4 8 6

आउटपुट - 24

स्पष्टीकरण - अधिकतम पथ 9 → 7 → 8 होगा।

समस्या को हल करने के लिए, हम सरणी के ऊपर से शुरू करेंगे और पहली पंक्ति का सबसे बड़ा तत्व ढूंढेंगे, और maxSum में स्टोर करेंगे। . फिर मैट्रिक्स को पार करने पर और पथ में होने वाले अधिकतम मान ज्ञात करें। यदि नए मान अधिक अपडेट हैं maxSum अन्यथा अपडेट न करें। और एक बार जब पूरे मैट्रिक्स का पता लगाया जाता है और पथ बन जाता है तो maxSum . लौटाएं ।

उदाहरण

मैट्रिक्स में अधिकतम पथ योग खोजने के लिए प्रोग्राम -

#include <iostream>
#define N 3
#define M 3
using namespace std;
int maxPathSum(int mat[][M]){
   for (int i = 1; i < N; i++) {
      for (int j = 0; j < M; j++) {
         if (j > 0 && j < M - 1)
            mat[i][j] += max(mat[i - 1][j], max(mat[i - 1][j - 1],mat[i - 1][j + 1]));
         else if (j > 0)
            mat[i][j] += max(mat[i - 1][j],
            mat[i - 1][j - 1]);
         else if (j < M - 1)
            mat[i][j] += max(mat[i - 1][j],
            mat[i - 1][j + 1]);
      }
   }
   int maxSum = mat[N-1][0];
   for (int j = 1; j < M; j++)
   maxSum = max(mat[N-1][j], maxSum);
   return maxSum;
}
int main(){
   int matrix[N][M] = {
      {3, 5, 9 },
      {1, 7, 2},
      {4, 8, 6}};
   cout<<"The maximum path sum of matrix is : "<<maxPathSum(matrix);
   return 0;
}

आउटपुट

The maximum path sum of matrix is : 24

  1. C++ में एक उल्टे त्रिकोण में अधिकतम पथ योग

    इस समस्या में हमें एक उल्टे त्रिभुज के रूप में संख्याएँ दी जाती हैं। हमारा काम एक प्रोग्राम बनाना है जो उल्टे त्रिकोण में अधिकतम पथ योग ढूंढेगा। उल्टा त्रिकोण संख्या का रूप एक व्यवस्था है जब पहली पंक्ति में n तत्व होते हैं, दूसरी n-1, और इसी तरह। यहां, हमें अधिकतम योग ज्ञात करना है जो प्रत्येक पंक

  1. सी++ में त्रिभुज में अधिकतम पथ योग

    इस समस्या में, हमें ऐसी संख्याएँ दी जाती हैं जो एक त्रिभुज के रूप में होती हैं। हमारा काम एक ऐसा प्रोग्राम बनाना है जो एक त्रिभुज में अधिकतम पथ योग प्राप्त करे। तत्वों को पहली पंक्ति से 1 एक तत्व के साथ व्यवस्थित किया जाता है और फिर अगली पंक्तियों में तत्वों की बढ़ती संख्या के साथ nth पंक्ति में तत

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

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