在 C++ 中查找无序数组中最大的成对和
在这个问题中,我们得到一个包含 N 个无序元素的 arr[] 数组。我们的任务是找到无序数组中最大的成对和。
我们将找到一对元素,它们的和最大。
让我们来看一个例子来理解这个问题:
Input : arr[] = {7, 3, 9, 12, 1} Output : 21
说明 −
Pair with largest sum, (9, 12). Sum = 21
解决方案方法
解决这个问题的一个简单方法是将数组的最大元素和第二大元素配对。
为此,我们将使用数组的第一个和第二个元素初始化数组的最大值和第二大值元素,较大的一个为最大值,另一个为第二大值。
现在,循环遍历从索引 2 到 (n-1) 的数组。并将它们与最大值和第二大值进行比较。
如果 arr[i] 大于最大值,则第二大值 = 最大值,最大值 = arr[i]。
如果 arr[i] 大于第二大值,则第二大值 = arr[i]。
循环结束后,返回 (最大值 + 第二大值)。
示例
程序说明我们解决方案的工作原理
#include<iostream> using namespace std; int findPairLargestSum(int arr[], int n){ int max, secondMax; if (arr[0] > arr[1]){ max = arr[0]; secondMax = arr[1]; } else{ max = arr[1]; secondMax = arr[0]; } for (int i = 2; i<n; i ++){ if (arr[i] > max){ secondMax = max; max = arr[i]; } else if (arr[i] > secondMax && arr[i] != max) secondMax = arr[i]; } return (max + secondMax); } int main(){ int arr[] = {12, 34, 10, 6, 40}; int n = sizeof(arr)/sizeof(arr[0]); cout<<"The sum of elements of pair with max sum is "<<findPairLargestSum(arr, n); return 0; }
输出
The sum of elements of pair with max sum is 74
广告