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

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


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

उल्टा त्रिभुज संख्याओं की एक व्यवस्था है जहां पहली पंक्ति में n तत्व होते हैं, दूसरी में n-1, और इसी तरह।

यहां, हमें प्रत्येक पंक्ति से एक तत्व जोड़कर प्राप्त होने वाला अधिकतम योग ढूंढना है।

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

इनपुट -

5 1 9 
3 6 
2

आउटपुट - 17

व्याख्या - यहां, मैंने अंतिम पंक्ति से शीर्ष पंक्ति तक का पथ ढूंढा है, जिसमें पथ में अधिकतम संभव तत्वों पर विचार किया गया है।

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

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

उदाहरण

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

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

int findMaxPathSumInvertedTriangle(int matrix[][N]) {
    int maxSum = 0;
    for (int i = N - 2; i >= 0; i--) {
        for (int j = 0; j < N - i; j++) {
            if (j - 1 >= 0)
                matrix[i][j] += max(matrix[i + 1][j], matrix[i + 1][j - 1]);
            else
                matrix[i][j] += matrix[i + 1][j];
            maxSum = max(maxSum, matrix[i][j]);
        }
    }
    return maxSum;
}

int main() {
    int invertedTriangle[N][N] = {
        {5, 1, 9},
        {3, 6, 0},
        {2, 0, 0}
    };
    cout << "The maximum path sum is " << findMaxPathSumInvertedTriangle(invertedTriangle);
    return 0;
}

आउटपुट

The maximum path sum is 17

  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 एल्गोरिदम डायनामिक प