在 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

更新於:2022年1月28日

890 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.