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

सी ++ में अधिकतम एक तत्व को हटाने वाला अधिकतम योग सबरे

इस समस्या में, हमें एक सरणी दी जाती है। हमारा काम एक ऐसा प्रोग्राम बनाना है जो c++ में अधिकतम एक तत्व को हटाते हुए अधिकतम योग सबएरे को खोजेगा।

मूल रूप से, हमें एक ऐसे तत्व को खोजने की आवश्यकता है जो हटाए जाने पर सरणी में शेष तत्वों के लिए अधिकतम योग प्रदान करता है।

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

इनपुट - सरणी ={5, 1, 9, 2, -1, 7}

आउटपुट - 24

स्पष्टीकरण - हमने सरणी से -1 हटा दिया है और योग सभी संभावित परिणामों में से अधिकतम बन गया है।

इस समस्या का एक समाधान यह होगा कि सरणी का न्यूनतम तत्व खोजा जाए और फिर सरणी के सभी शेष तत्वों का योग ज्ञात किया जाए।

लेकिन यहां एलिमेंट रिमूवल कंडीशन लागू नहीं है, कडाने का एल्गोरिथम बेहतर तरीके से समस्या का समाधान करेंगे। इसलिए, यहां हम अधिकतम योग की गणना इस तरह करेंगे कि हम शुरुआत से लेकर अंत तक के तत्व तक का योग पाएंगे।

और फिर जाँच करें कि प्रारंभ और समाप्ति योग सरणियों का उपयोग करते समय कौन सा ith तत्व छोड़ दिया गया है और फिर दिए गए तत्व को छोड़ने के बाद योग को प्रिंट करें।

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
int maxSubarraySum(int array[], int n){
   int startSum[n], endSum[n];
   int maxSum = array[0], overAllMax = array[0];
   startSum[0] = array[0];
   for (int i = 1; i < n; i++){
      maxSum = max(array[i], maxSum + array[i]);
      overAllMax = max(overAllMax, maxSum);
      startSum[i] = maxSum;
   }
   maxSum = endSum[n-1] = array[n-1];
   for (int i = n-2; i >= 0; i--){
      maxSum = max(array[i], maxSum + array[i]);
      overAllMax = max(overAllMax, maxSum);
      endSum[i] = maxSum;
   }
   int SubArraySum = overAllMax;
   for (int i = 1; i < n - 1; i++)
   SubArraySum = max(SubArraySum, startSum[i - 1] + endSum[i + 1]);
   return SubArraySum;
}
int main()
{
   int array[] = {5, 7, 1, -1, 4, 2, 9};
   int n = sizeof(array) / sizeof(array[0]);
   cout<;"The maximum subarray after removing one element is "<<maxSubarraySum(array, n);
   return 0;
}

आउटपुट

The maximum subarray after removing one element is 28

  1. C++ में अधिकतम एक तत्व को हटाने के बाद अधिकतम सबअरे योग को अधिकतम करें

    समस्या कथन एन पूर्णांकों की एक सरणी गिरफ्तारी [] को देखते हुए। कार्य पहले अधिकतम उप-सरणी योग को खोजना है और फिर उप-सरणी से अधिकतम एक तत्व को निकालना है। अधिकतम एक तत्व को ऐसे निकालें कि हटाने के बाद अधिकतम योग अधिकतम हो। यदि दी गई इनपुट सरणी {1, 2, 3, -2, 3} है तो अधिकतम उप-सरणी योग {2, 3, -2, 3}

  1. C++ में अधिकतम योग सख्ती से बढ़ते हुए सबरे का पता लगाएं

    मान लीजिए कि हमारे पास n पूर्णांकों की एक सरणी है। सख्ती से बढ़ते उपसरणियों का अधिकतम योग ज्ञात कीजिए। तो अगर सरणी [1, 2, 3, 2, 5, 1, 7] की तरह है, तो योग 8 है। इस सरणी में तीन सख्ती से बढ़ते उप-सरणी हैं ये {1, 2, 3}, {2 , 5} और {1, 7}। अधिकतम योग उप-सरणी {1, 7} है इस समस्या को हल करने के लिए, हमें

  1. C++ में डिवाइड और कॉनकर का उपयोग करते हुए अधिकतम योग सबअरे

    मान लीजिए कि हमारे पास सकारात्मक और नकारात्मक मूल्यों वाले डेटा की एक सूची है। हमें सन्निहित उप-सरणी का योग ज्ञात करना है जिसका योग सबसे बड़ा है। मान लीजिए सूची में {-2, -5, 6, -2, -3, 1, 5, -6} है, तो अधिकतम उप-सरणी का योग 7 है। यह {6, -2, -3 का योग है। , 1, 5} हम इस समस्या का समाधान फूट डालो और ज