查找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

更新于:2022年1月27日

229 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.