Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm Tổng của cặp từ hai mảng có tổng lớn nhất trong C ++

Trong bài toán này, chúng ta có hai mảng, tích cực và khác biệt. Nhiệm vụ của chúng ta là tìm tổng các cặp từ hai mảng có tổng lớn nhất .

Chúng tôi sẽ tìm cặp có tổng lớn nhất với một phần tử từ mỗi mảng.

Hãy lấy một ví dụ để hiểu vấn đề,

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

Giải thích -

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

Phương pháp tiếp cận giải pháp

Một cách tiếp cận đơn giản để giải quyết vấn đề là sử dụng các vòng lặp. Chúng tôi sẽ sử dụng một vòng lặp lồng nhau và tìm tổng của tất cả các cặp và trả về cặp có tổng lớn nhất. Một cách tiếp cận hiệu quả để giải quyết vấn đề là tìm phần tử lớn nhất của mỗi mảng. Và sau đó tìm tổng cặp lớn nhất. Điều này sẽ sử dụng một vòng lặp đơn giản thay vì một vòng lặp lồng nhau.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi

#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;
}

Đầu ra

Sum of pair from two arrays with maximum sum is 15

Một cách tiếp cận khác đang sắp xếp mảng. Và sau đó tìm phần tử có giá trị lớn nhất cho cả hai mảng và sau đó tìm tổng của cặp lớn nhất.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi

#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;
}

Đầu ra

Sum of pair from two arrays with maximum sum is 15