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

C++ में समान शुरुआत और अंत मान वाले उपसरणी का अधिकतम योग


एक पूर्णांक सरणी दी गई है। ऐसा उपसरणी ढूंढें जिसका योग अधिकतम हो और जिसके पहले और अंतिम तत्व समान हों।

उदाहरण: {1, 3, 5, 2, 4, 18, 2, 3} → अधिकतम योग 37 (उपसरणी 3 से 3 तक)।

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

  1. प्रत्येक मान की पहली और अंतिम घटना के इंडेक्स संग्रहीत करें (हैश मैप)।
  2. प्रीफिक्स योग सरणी pr बनाएं।
  3. प्रत्येक इंडेक्स i के लिए, मान a[i] की पहली (start) और अंतिम (end) घटना लें।
  4. उपसरणी योग = pr[end] - pr[start-1]।
  5. अधिकतम योग वापस करें।

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

int maxValue(int a[], int n) {
    unordered_map first, last;
    int pr[n];
    pr[0] = a[0];
    for (int i = 1; i < n; i++) {
        pr[i] = pr[i - 1] + a[i];
        if (first[a[i]] == 0) first[a[i]] = i;
        last[a[i]] = i;
    }
    int ans = 0;
    for (int i = 0; i < n; i++) {
        int start = first[a[i]];
        int end = last[a[i]];
        ans = max(ans, pr[end] - (start > 0 ? pr[start - 1] : 0));
    }
    return ans;
}

int main() {
    int arr[] = {1, 3, 5, 2, 4, 18, 2, 3};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << maxValue(arr, n);
    return 0;
}

आउटपुट

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

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

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

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

  1. - C++ में डिवाइड एंड कन्कर एल्गोरिदम का उपयोग करके अधिकतम सबएरे योग

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