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

स्पष्टीकरण

Here are the elements to be picked,
i = 0, arr1[0] = 5, arr2[0] = 8.Element to be taken 8
i = 1, arr1[1] = 1, arr2[1] = 4.Element to be taken 4
i = 2, arr1[2] = 6, arr2[2] = 7.Element to be taken 6
i = 3, arr1[3] = 2, arr2[3] = 9.Element to be taken 2
i = 4, arr1[4] = 8, arr2[0] = 1.Element to be taken 8

maxSum = 8 + 4 + 6 + 2 + 8 = 28

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

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

एल्गोरिदम

आरंभ करें -

maxSum = 0

चरण 1 -

for i −> 0 to n
. के लिए

चरण 1.1 -

if arr1[i] > arr2[i] and M >= 0 −> maxSum += arr1[i].

चरण 1.2 -

else if arr1[i] < arr2[i] and N >= 0 −> maxSum += arr2[i].

चरण 1.3 -

else exit.

चरण 3 -

return 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++ में दो सरणियों में अधिकतम योग पथ

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

  1. सी ++ में दो अलग-अलग सरणी के उप-सरणी का अधिकतम या योग

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

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

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