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

C++ में k को अधिकतम तत्व मानने वाले गैर-अतिव्यापी उपसरणियों की लंबाई का अधिकतम योग (Maximum sum of lengths of non-overlapping subarrays with k as the max element)


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

समस्या विवरण - यहां, हमारे पास एक सरणी और एक पूर्णांक k है। हमें इस सरणी से बनने वाले सभी संभावित गैर-अतिव्यापी उप-सरणियों को ढूंढना है। और बनाई गई सभी उपसरणियों की लंबाई का योग करना है।

आइए एक उदाहरण से समझते हैं:

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

आउटपुट - 7

व्याख्या - अधिकतम तत्व 3 वाली गैर-अतिव्यापी उपसरणियां:

{3} : लंबाई = 1
{1, 2, 3, 1} : लंबाई = 4
{3, 2} : लंबाई = 2
लंबाई का योग = 1+4+2 = 7

इस समस्या को हल करने के लिए, हम सरणी को पार करेंगे और उन सभी तत्वों को ढूंढेंगे जो k से कम या बराबर हैं और एक लंबाई बनाए रखेंगे, यदि उपसरणी (तत्वों की धारा) में k है तो लंबाई को योग में जोड़ें।

उदाहरण

#include <iostream>
using namespace std;

int subArrayLengthSum(int arr[], int n, int k){
    int lengthSum = 0;
    int subarrayLength = 0;
    int flag = 0;
    for (int i = 0; i < n;) {
        subarrayLength = 0;
        flag = 0;
        while (arr[i] <= k && i < n) {
            subarrayLength++;
            if (arr[i] == k)
                flag = 1;
            i++;
        }
        if (flag == 1)
            lengthSum += subarrayLength;
        while (arr[i] > k && i < n)
            i++;
    }
    return lengthSum;
}

int main(){
    int arr[] = {3, 7, 1, 2, 3, 1, 6, 3, 2, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    int k = 3;
    int ans = subArrayLengthSum(arr, size, k);
    cout << "अधिकतम तत्व " << k << " के साथ गैर-अतिव्यापी उपसरणियों की लंबाई का अधिकतम योग है " << ans;
    return 0;
}

आउटपुट

अधिकतम तत्व 3 के साथ गैर-अतिव्यापी उपसरणियों की लंबाई का अधिकतम योग है 7
  1. - C++ में अधिकतम एक तत्व हटाकर अधिकतम सबएरे योग को अधिकतम करना

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

  1. - C++ में आकार K के M नॉन-ओवरलैपिंग सबएरे का अधिकतम योग

    समस्या कथन एक ऐरे और दो संख्याएं M और K दी गई हैं। हमें ऐरे में आकार K के अधिकतम M सबएरे का योग ढूंढना है (नॉन-ओवरलैपिंग)। (ऐरे का क्रम अपरिवर्तित रहता है)। K सबएरे का आकार है और M सबएरे की संख्या है। यह माना जा सकता है कि ऐरे का आकार m*k से अधिक है। यदि कुल ऐरे का आकार k का गुणक नहीं है, तो हम आंश

  1. - C++ का उपयोग करके मैट्रिक्स में अधिकतम योग वाला कॉलम खोजें

    मान लीजिए हमारे पास M x N आकार का एक मैट्रिक्स है। हमें वह कॉलम ढूंढना है जिसका योग अधिकतम है। इस प्रोग्राम में हम किसी ट्रिकी दृष्टिकोण का पालन नहीं करेंगे, बल्कि सरणी को कॉलम-वार पार करेंगे, प्रत्येक कॉलम का योग प्राप्त करेंगे, और यदि योग अधिकतम है, तो उस योग और कॉलम इंडेक्स को प्रिंट करेंगे। उदा