Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 최대 합계가 있는 두 배열에서 쌍의 합계 찾기

<시간/>

이 문제에서는 양수와 구별되는 두 개의 배열이 제공됩니다. 우리의 임무는 최대 합을 갖는 두 배열에서 쌍의 합을 찾는 것입니다. .

각 배열에서 하나의 요소로 최대 합을 갖는 쌍을 찾습니다.

문제를 이해하기 위해 예를 들어 보겠습니다.

Input : arr1[] = {3, 7, 5}, arr2[] = {8, 2, 4}
Output : 15

설명 -

Pairs is (7, 8) = 7 + 8 = 15

해결 방법

문제를 해결하는 간단한 방법은 루프를 사용하는 것입니다. 중첩 루프를 사용하여 모든 쌍의 합을 찾고 최대 합을 가진 쌍을 반환합니다. 효율적인 접근 방식 문제를 해결하는 방법은 각 배열의 최대 요소를 찾는 것입니다. 그런 다음 최대 쌍 합계를 찾습니다. 중첩 루프 대신 간단한 루프를 사용합니다.

예시

솔루션 작동을 설명하는 프로그램

#include <iostream>
using namespace std;
int findMaxPairSum(int arr1[], int n1, int arr2[], int n2) {
   int max1 = -1;
   int max2 = -1;
   for (int i = 0; i < n1; i++) {
      if (arr1[i] > max1)
         max1 = arr1[i];
   }
   for (int i = 0; i < n2; i++) {
      if (arr2[i] > max2)
         max2 = arr2[i];
   }
   return (max1 + max2);
}
int main() {
   int arr1[] = { 3, 7, 5 };
   int arr2[] = { 8, 2, 4 };
   int n1 = sizeof(arr1) / sizeof(arr1[0]);
   int n2 = sizeof(arr2) / sizeof(arr2[0]);
   cout<<"Sum of pair from two arrays with maximum sum is "<<findMaxPairSum(arr1, n1, arr2, n2);
   return 0;
}

출력

Sum of pair from two arrays with maximum sum is 15

또 하나의 접근 방식 배열을 정렬하고 있습니다. 그런 다음 두 배열의 최대값 요소를 찾은 다음 최대 쌍 합계를 찾습니다.

예시

솔루션 작동을 설명하는 프로그램

#include <bits/stdc++.h>
using namespace std;
int findMaxPairSum(int arr1[], int n1, int arr2[], int n2) {
   sort(arr1, arr1 + n1);
   sort(arr2, arr2 + n2);
   return (arr1[n1 - 1] + arr2[n2 - 1]);
}
int main() {
   int arr1[] = { 3, 7, 5 };
   int arr2[] = { 8, 2, 4 };
   int n1 = sizeof(arr1) / sizeof(arr1[0]);
   int n2 = sizeof(arr2) / sizeof(arr2[0]);
   cout<<"Sum of pair from two arrays with maximum sum is "<<findMaxPairSum(arr1, n1, arr2, n2);
   return 0;
}

출력

Sum of pair from two arrays with maximum sum is 15