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

C++ में अधिकतम योग जैसे कि कोई दो तत्व आसन्न न हों - सेट 2


इस समस्या में, हमें एक सरणी arr[] दी गई है। हमारा कार्य C++ में अधिकतम योग ढूंढने के लिए एक प्रोग्राम बनाना है जैसे कि कोई दो तत्व आसन्न न हों।

समस्या विवरण

हमें सरणी से अनुक्रम का अधिकतम योग ढूंढना होगा जैसे कि योग अनुक्रम से कोई 2 संख्याएं सरणी में आसन्न न हों।

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

इनपुट

arr[] = {5, 1, 3, 7, 9, 2, 5}

आउटपुट

22

व्याख्या

इंडेक्स 0 से वैकल्पिक तत्वों के साथ योग अनुक्रम लेना: 5 + 3 + 9 + 5 = 22 इंडेक्स 1 से वैकल्पिक तत्वों के साथ योग अनुक्रम लेना: 1 + 7 + 2 = 10

समाधान दृष्टिकोण

पिछले सेट में, हमने समस्या को हल करने का एक दृष्टिकोण देखा है। यहां, हम डायनामिक प्रोग्रामिंग दृष्टिकोण के बारे में जानेंगे।

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

वर्तमान DP अधिकतम dp[i+2]+ arr[i] और dp[i+1] का अधिकतम है।

उदाहरण

हमारे समाधान के काम को दिखाने वाला प्रोग्राम,

#include <iostream> using namespace std; int DP[100]; bool currState[100]; int maxVal(int a, int b){    if(a > b)       return a;       return b;    } int calcMaxSumWOAdj(int arr[], int i, int n){    if (i >= n)       return 0;    if (currState[i])       return DP[i];    currState[i] = 1;    DP[i] = maxVal(calcMaxSumWOAdj(arr, i + 1, n), arr[i] + calcMaxSumWOAdj(arr, i + 2, n));    return DP[i]; } int main(){    int arr[] = { 5, 1, 3, 7, 9, 2, 5 };    int n = sizeof(arr) / sizeof(int);    cout<<"अधिकतम योग जैसे कि कोई दो तत्व आसन्न न हों "<<calcMaxSumWOAdj(arr, 0, n);    return 0; }

आउटपुट

अधिकतम योग जैसे कि कोई दो तत्व आसन्न न हों 22

  1. C++ प्रोग्राम में डायनामिक प्रोग्रामिंग का उपयोग करके बाइनरी ट्री में आसन्न न होने वाले नोड्स का अधिकतम योग C++ प्रोग्राम में डायनामिक प्रोग्रामिंग का उपयोग करके बाइनरी ट्री में आसन्न न होने वाले नोड्स का अधिकतम योग

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है जिसमें प्रत्येक नोड का एक मान है। हमारा कार्य एक प्रोग्राम बनाना है जो डायनामिक प्रोग्रामिंग का उपयोग करके बाइनरी ट्री में ऐसे नोड्स का अधिकतम योग ढूंढे जो आसन्न न हों। समस्या विवरण हम बाइनरी ट्री के उपसमुच्चय (subsets) को चुनेंगे ताकि योग अधिकतम हो औ

  1. सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++ सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++

    इस समस्या में, हमें एक सर्कुलर ऐरे cirArr[] दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में सर्कुलर ऐरे में अधिकतम योग ढूंढे जहाँ कोई दो आसन्न तत्व न हों।समस्या विवरणसर्कुलर ऐरे के लिए, हमें ऐरे के तत्वों का अधिकतम योग ढूंढना है जहाँ आसन्न तत्वों को नहीं लिया जा सकता, यानी हमें वैकल्पिक तत

  1. - C++ में दो सरणियों में अधिकतम योग पथ (Maximum Sum Path in Two Arrays)

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