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

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


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

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

  • n :=सरणी का आकार, और :=a[0]
  • suff_with_del :=0, suff_with_out_del :=a[0]
  • i के लिए i से 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]
    • उत्तर:=अधिकतम उत्तर, suff_with_out_del और suff_with _del
  • रिटर्न रेस

उदाहरण(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++ में दिए गए योग के साथ अधिकतम आकार का उपसमुच्चय

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

  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} है इस समस्या को हल करने के लिए, हमें