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

C++ प्रोग्राम में क्रमानुसार दो सरणियों से तत्व चुनकर अधिकतम योग


इस समस्या में, हमें दो सरणियाँ arr1[] और arr2[], और दो संख्याएँ N और M दी गई हैं।

N, arr1 से लिए गए तत्वों की संख्या देता है।

M, arr2 से लिए गए तत्वों की संख्या देता है।

हमें arr1[i] से arr2[i] में से एक तत्व चुनना है, जिसके लिए योग अधिकतम हो, लेकिन अधिकतम N arr1 से और M arr2 से लिए जा सकते हैं।

हमारा कार्य एक प्रोग्राम बनाना है जो C++ में क्रमानुसार दो सरणियों से तत्व चुनकर अधिकतम योग ढूंढे।

उदाहरण

इनपुट

arr1[] = {5, 1, 6, 2, 8, 9} 
arr2[] = {8, 4, 7, 9, 1, 3} 
M = 3, N = 2

आउटपुट

28

व्याख्या

चुने जाने वाले तत्व हैं:
i = 0, arr1[0] = 5, arr2[0] = 8. लिया गया तत्व 8
i = 1, arr1[1] = 1, arr2[1] = 4. लिया गया तत्व 4
i = 2, arr1[2] = 6, arr2[2] = 7. लिया गया तत्व 6
i = 3, arr1[3] = 2, arr2[3] = 9. लिया गया तत्व 2
i = 4, arr1[4] = 8, arr2[0] = 1. लिया गया तत्व 8
maxSum = 8 + 4 + 6 + 2 + 8 = 28

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

समस्या को हल करने का एक समाधान arr1 और arr2 के अधिकतम तत्व को ढूंढना है, जब तक तत्वों की संख्या M या N तक नहीं पहुंच जाती। और फिर सभी मानों को जोड़कर योग निकालना।

एल्गोरिदम

आरंभीकरण -

maxSum = 0

चरण 1 -

i → 0 से n तक

चरण 1.1 -

यदि arr1[i] > arr2[i] और M >= 0 → maxSum += arr1[i]।

चरण 1.2 -

अन्यथा यदि arr1[i] < arr2[i] और N >= 0 → maxSum += arr2[i]।

चरण 1.3 -

अन्यथा बाहर निकलें।

चरण 3 -

maxSum वापस करें

उदाहरण

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम,

#include<iostream> 
using namespace std; 

int calcMaxSumFromArrays(int arr1[], int arr2[], int N, int M, int size1, int size2) { 
    int maxSum = 0; 
    for(int i = 0; i < size1; i++){ 
        if(arr1[i] > arr2[i] && N > 0){ 
            maxSum += arr1[i]; 
            N--; 
        } 
        else if(arr1[i] <= arr2[i] && M > 0){ 
            maxSum += arr2[i]; 
            M--; 
        } 
        else if(M > 0){ 
            maxSum += arr2[i]; 
            M--; 
        } 
        else if(N > 0){ 
            maxSum += arr1[i]; 
            N--; 
        } 
        else 
            return maxSum; 
    } 
    return maxSum; 
} 

int main() { 
    int arr1[]= {5, 1, 6, 2, 8, 9}; 
    int arr2[]= {8, 4, 7, 9, 1, 3}; 
    int N = 3, M = 2; 
    int size1 = sizeof(arr1)/sizeof(arr1[0]); 
    int size2 = sizeof(arr2)/sizeof(arr2[0]); 
    cout<<"The maximum sum by picking elements from two arrays in order is "<<calcMaxSumFromArrays(arr1, arr2, N, M, size1, size2); 
    return 0; 
}

आउटपुट

The maximum sum by picking elements from two arrays in order is 28
  1. - C++ में दो सरणियों में अधिकतम योग पथ (Maximum Sum Path in Two Arrays)

    समस्या कथन दो क्रमबद्ध सरणियां दी गई हैं जिनमें कुछ सामान्य तत्व हो सकते हैं। किसी भी सरणी की शुरुआत से किसी भी सरणी के अंत तक पहुंचने के लिए अधिकतम योग पथ का योग ढूंढें। हम केवल सामान्य तत्वों पर एक सरणी से दूसरी सरणी पर जा सकते हैं। ध्यान दें कि सामान्य तत्वों का समान इंडेक्स पर होना आवश्यक नहीं

  1. - C++ में दो अलग-अलग ऐरे के सब-ऐरे का अधिकतम OR योग

    समस्या कथन दो धनात्मक पूर्णांक ऐरे दिए गए हैं। प्रत्येक ऐरे से समान आकार के दो सब-ऐरे चुनें और दोनों सब-ऐरे के अधिकतम संभव OR योग की गणना करें। उदाहरण यदि arr1[] = {1, 2, 4, 3, 2} और Arr2[] = {1, 3, 3, 12, 2} तो अधिकतम परिणाम तब प्राप्त होता है जब हम निम्न दो सबऐरे बनाते हैं - Subarr1[] = {2, 4, 3}

  1. - C++ में दो दिए गए ऐरे से क्रम बनाए रखते हुए अधिकतम ऐरे बनाना

    समस्या कथन दो समान आकार के ऐरे A[] और B[] दिए गए हैं। कार्य समान आकार का तीसरा ऐरे बनाना है। परिणाम ऐरे में दोनों ऐरे से अधिकतम n तत्व होने चाहिए। इसमें A[] के चुने हुए तत्व पहले होने चाहिए, फिर B[] के चुने हुए तत्व उसी क्रम में जैसे वे मूल ऐरे में दिखाई देते हैं। यदि सामान्य तत्व हैं, तो res[] में