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

C++ में त्रिभुज में अधिकतम पथ योग


इस समस्या में, हमें संख्याएँ त्रिभुज के रूप में दी गई हैं। हमारा कार्य एक प्रोग्राम बनाना है जो त्रिभुज में अधिकतम पथ योग ढूंढेगा।

तत्वों को पहली पंक्ति से 1 तत्व के साथ व्यवस्थित किया जाता है और फिर अगली पंक्तियों में तत्वों की बढ़ती संख्या के साथ जब तक nवीं पंक्ति में तत्व नहीं होते।

इसलिए, प्रोग्राम वह पथ ढूंढेगा जो त्रिभुज में तत्वों का अधिकतम योग प्रदान करेगा।

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

इनपुट -

1 
5 6 
8 2 9

आउटपुट - 16

व्याख्या -

शीर्ष से पथ अधिकतम योग लौटाएगा - 9+6+1 = 16

इस समस्या को हल करने के लिए, हम डायनामिक प्रोग्रामिंग का उपयोग करेंगे जो बॉटम-अप दृष्टिकोण का उपयोग करता है।

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

उदाहरण

त्रिभुज में अधिकतम पथ योग ढूंढने का प्रोग्राम -

#include<iostream> 
using namespace std; 
#define N 3 

int findMaxPathSumTriangle(int mat[][N], int m, int n) {
    for (int i = m - 1; i >= 0; i--) {
        for (int j = 0; j <= i; j++) {
            if (mat[i + 1][j] > mat[i + 1][j + 1])
                mat[i][j] += mat[i + 1][j];
            else
                mat[i][j] += mat[i + 1][j + 1];
        }
    }
    return mat[0][0];
}

int main() {
    int triangle[N][N] = {
        {1, 0, 0},
        {5, 6, 0},
        {8, 2, 9}
    };
    cout << "The maximum path sum in triangle is " << findMaxPathSumTriangle(triangle, 2, 2);
    return 0;
}

आउटपुट

The maximum path sum in triangle is 16

  1. C++ में पाथ सम III - रूट से लीफ तक दिए गए योग वाले पाथ ढूंढना C++ में पाथ सम III - रूट से लीफ तक दिए गए योग वाले पाथ ढूंढना

    मान लीजिए हमारे पास एक बाइनरी ट्री है जिसमें प्रत्येक नोड एक पूर्णांक मान रखता है। हमें उन पाथ को ढूंढना है जिनका योग दिए गए मान के बराबर हो। पाथ रूट से लीफ तक होना चाहिए। समस्या विवरण यदि ट्री है [5,4,8,11,null,13,4,7,2,null,null,5,1] और योग 22 है, तो परिणाम होगा - पाथ हैं: [[5,4,11,2],[5,8,4,5]

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

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

  1. - C++ में ट्रायंगल में न्यूनतम सम पथ

    समस्या कथन संख्याओं की एक त्रिकोणीय संरचना दी गई है, शीर्ष से नीचे तक न्यूनतम पथ योग ढूंढें। प्रत्येक चरण में आप नीचे की पंक्ति पर आसन्न संख्याओं पर जा सकते हैं। उदाहरण यदि इनपुट है - 5 7 3 8 1 2 9 6 4 5 तो न्यूनतम योग 13 है जैसा कि नीचे दिया गया है - 5 + 3 + 1 + 4 एल्गोरिदम डायनामिक प