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

अधिकतम योग बढ़ता हुआ सबसीक्वेंस

अधिकतम योग बढ़ता हुआ सबसीक्वेंस पूर्णांकों की दी गई सूची का एक सबसीक्वेंस है, जिसका योग अधिकतम है और सबसीक्वेंस में सभी तत्व बढ़ते क्रम में सॉर्टेड हैं।

मान लें एक ऐरे है जो अधिकतम योग बढ़ते सबसीक्वेंस को स्टोर करता है, जैसे कि L[i] array[i] पर समाप्त होने वाला अधिकतम योग बढ़ता हुआ सबसीक्वेंस है।

इनपुट और आउटपुट

इनपुट: पूर्णांकों का अनुक्रम
{3, 2, 6, 4, 5, 1}

आउटपुट: अधिकतम योग वाला बढ़ता हुआ सबसीक्वेंस
{3, 4, 5}

एल्गोरिदम

maxSumSubSeq(array, n)

इनपुट: संख्याओं का अनुक्रम, तत्वों की संख्या
आउटपुट: बढ़ते सबसीक्वेंस का अधिकतम योग

शुरुआत
    subSeqLen नामक ऐरे के ऐरे को आकार n का परिभाषित करें
    arr[0] को subSeqLen में जोड़ें
    i के लिए रेंज (1 से n-1) में, करें
        j के लिए रेंज (0 से i-1) में, करें
            यदि arr[i] > arr[j] और subSeqLen[i] का योग < subSeqLen[j] का योग, तो
                subSeqLen[i] := subSeqLen[j]
        पूर्ण
    पूर्ण
    arr[i] को subSeqLen[i] में जोड़ें
    res := subSeqLen[0]
    subSeqLen के सभी मानों के लिए, करें
        यदि subSeqLen[i] का योग > subSeqLen[res] का योग, तो
            res := subSeqLen[i]
    पूर्ण
    res के मान प्रिंट करें
अंत

उदाहरण (C++ कोड)

#include <iostream>
#include <vector>
using namespace std;

int findAllSum(vector arr) {
    int sum = 0;
    for(int i = 0; i < arr.size(); i++)
        sum += arr[i];
    return sum;
}

void maxSumSubSeq(int arr[], int n) {
    vector> subSeqLen(n);
    subSeqLen[0].push_back(arr[0]);
    
    for (int i = 1; i < n; i++) {
        for (int j = 0; j < i; j++) {
            if ((arr[i] > arr[j]) && (findAllSum(subSeqLen[i]) < findAllSum(subSeqLen[j])))
                subSeqLen[i] = subSeqLen[j];
        }
        subSeqLen[i].push_back(arr[i]);
    }
    
    vector res = subSeqLen[0];
    for(int i = 0; i < subSeqLen.size(); i++) {
        if (findAllSum(subSeqLen[i]) > findAllSum(res))
            res = subSeqLen[i];
    }
    
    for(int i = 0; i < res.size(); i++)
        cout << res[i] << " ";
    cout << endl;
}

int main() {
    int arr[] = { 3, 2, 6, 4, 5, 1 };
    int n = 6;
    cout << "The Maximum Sum Subsequence is: ";
    maxSumSubSeq(arr, n);
}

आउटपुट

The Maximum Sum Subsequence is: 3 4 5
  1. - C++ में अधिकतम योग वृत्ताकार उपसरणी

    मान लीजिए हमारे पास पूर्णांकों का एक वृत्ताकार सरणी C है जिसे सरणी A द्वारा दर्शाया गया है। हमें C के एक गैर-खाली उपसरणी का अधिकतम संभव योग ढूंढना है। एक उपसरणी में निश्चित बफर A के प्रत्येक तत्व को अधिकतम एक बार शामिल किया जा सकता है। उदाहरण: [1,-2,3,-2] के लिए आउटपुट 3 होगा (उपसरणी [3] का योग 3)

  1. - C++ में Number of Longest Increasing Subsequence

    मान लीजिए हमारे पास पूर्णांकों की एक अक्रमबद्ध सरणी है। हमें सबसे लंबी बढ़ती उपअनुक्रम (longest increasing subsequence) की संख्या ढूंढनी है, इसलिए यदि इनपुट [1, 3, 5, 4, 7] जैसा है, तो आउटपुट 2 होगा, क्योंकि बढ़ते उपअनुक्रम [1,3,5,7] और [1, 3, 4, 7] हैं।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे

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

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