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

C++ में एक डिलीशन के साथ अधिकतम सबएरे सम


मान लीजिए हमारे पास इंटीजर्स का एक ऐरे है; हमें अधिकतम एक एलिमेंट डिलीशन के साथ नॉन-खाली सबएरे (सन्निहित एलिमेंट्स) के लिए अधिकतम सम ढूंढना है। दूसरे शब्दों में, हम कह सकते हैं कि हम एक सबएरे चुनना चाहते हैं और वैकल्पिक रूप से उससे एक एलिमेंट डिलीट करना चाहते हैं ताकि कम से कम एक एलिमेंट बचा रहे और शेष एलिमेंट्स का सम अधिकतम संभव हो। हमें ध्यान रखना होगा कि एक एलिमेंट डिलीट करने के बाद सबएरे नॉन-खाली होना चाहिए। यदि इनपुट [1,-2,0,3] है, तो आउटपुट 4 होगा। इसलिए यदि हम -2 को डिलीट करते हैं, तो यह अधिकतम सम लौटाएगा।

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे -

  • n := ऐरे का आकार, ans := a[0]
  • suff_with_del := 0, suff_with_out_del := a[0]
  • i के लिए 1 से n - 1 तक की रेंज में
    • suff_with_del := suff_with_del + a[i] और suff_with_out_del का मैक्स
    • suff_with_out_del := a[i] और suff_with_out_del + a[i] का मैक्स
    • ans := ans, suff_with_out_del और suff_with_del का मैक्स
  • ans लौटाएं

उदाहरण (C++)

बेहतर समझ के लिए निम्नलिखित इम्प्लीमेंटेशन देखें -

#include <bits/stdc++.h> using namespace std; class Solution { public:    int maximumSum(vector<int>& a) {       int n = a.size();       int ans = a[0];       int suffix_with_deletion = 0;       int suffix_with_not_deletion = a[0];       for(int i = 1;i<n;i++){          suffix_with_deletion = max(suffix_with_deletion + a[i], suffix_with_not_deletion);          suffix_with_not_deletion = max(a[i],suffix_with_not_deletion+a[i]);          ans = max({ans, suffix_with_not_deletion,suffix_with_deletion});       }       return ans;    } }; main(){    vector<int> v = {1,-2,0,3};    Solution ob;    cout <<ob.maximumSum(v); }

इनपुट

[1,-2,0,3]

आउटपुट

4

  1. - C++ में दिए गए योग के साथ अधिकतम आकार का सबसेट

    समस्या कथनN तत्वों का एक एरे और योग दिया गया है। हमें उस अधिकतम आकार के सबसेट का आकार ढूंढना है जिसका योग दिए गए योग के बराबर हो।उदाहरणयदि इनपुट एरे arr = { 2, 3, 5, 10 } है और योग = 20 है तो आउटपुट 4 होगा क्योंकि −2 + 3 + 5 + 10 = 20 जो दिए गए योग के बराबर है।एल्गोरिदमहम इस समस्या को हल करने

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

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

  1. - सख्ती से बढ़ते सब-अर्रे का अधिकतम योग खोजें C++ में

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