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

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

समस्या कथन

संख्याओं के एक समकोण त्रिभुज को देखते हुए, ऊपर से आधार की ओर जाने वाले पथों पर दिखाई देने वाली संख्याओं के योग का सबसे बड़ा योग ज्ञात कीजिए, ताकि प्रत्येक पथ पर अगली संख्या सीधे नीचे या नीचे-और-एक-स्थान पर स्थित हो। -द-राइट

उदाहरण

If given input is:
3
4 5
1 10 7
Then maximum sum is 18 as (3 + 5 + 10).

एल्गोरिदम

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

हम उपरोक्त दो कक्षों पर पुनरावर्ती रूप से विचार करके इन राशियों की पुनरावर्ती गणना कर सकते हैं

चूंकि ओवरलैपिंग उप-समस्याएं हैं, हम अंतिम पंक्ति के विशेष सेल पर अधिकतम योग समाप्त करने के लिए गतिशील प्रोग्रामिंग का उपयोग करते हैं

उदाहरण

#include<bits/stdc++.h>
using namespace std;
int maxSum(int tringle[][3], int n){
   if (n > 1) {
      tringle[1][1] = tringle[1][1] + tringle[0][0];
      tringle[1][0] = tringle[1][0] + tringle[0][0];
   }
   for(int i = 2; i < n; i++) {
      tringle[i][0] = tringle[i][0] + tringle[i-1][0];
      tringle[i][i] = tringle[i][i] + tringle[i-1][i-1];
      for (int j = 1; j < i; j++){
         if (tringle[i][j] + tringle[i-1][j-1] >=tringle[i][j] + tringle[i-1][j]) {
            tringle[i][j] = tringle[i][j] + tringle[i-1][j-1];
         } else {
            tringle[i][j] = tringle[i][j]+tringle[i-1][j];
         }
      }
   }
   int max = tringle[n - 1][0];
   for(int i = 1;i < n; i++) {
      if(max < tringle[n-1][i]) {
         max=tringle[n-1][i];
      }
   }
   return max;
}
int main(){
   int tringle[3][3] = {
      {3},
      {4,5},
      {1,10,7}
   };
   cout << "Maximum sum = " << maxSum(tringle, 3) << endl;
   return 0;
}

आउटपुट

जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है -

Maximum sum = 18

  1. सी ++ पथ लंबाई जिसमें अधिकतम संख्या में मोड़ हैं

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

  1. C++ . में समकोण समद्विबाहु त्रिभुज में फिट होने वाले वर्गों की अधिकतम संख्या

    कार्य को देखते हुए ए वाले वर्गों की अधिकतम संख्या ज्ञात करना है जो एस के आधार के साथ एक समकोण समद्विबाहु त्रिभुज के अंदर फिट हो सकते हैं (एक समद्विबाहु त्रिभुज में कम से कम 2 बराबर पक्ष होते हैं)। आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है: इनपुट s=5, a=1 आउटपुट 10 स्पष्टीकरण -

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

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