ในปัญหานี้ เราได้รับ arr[] ซึ่งประกอบด้วยองค์ประกอบที่ไม่ได้เรียงลำดับ N งานของเราคือ หาผลรวมคู่ที่ใหญ่ที่สุดในอาร์เรย์ที่ไม่เรียงลำดับ .
เราจะหาคู่ที่มีผลรวมสูงสุด
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
Input : arr[] = {7, 3, 9, 12, 1}
Output : 21 คำอธิบาย −
Pair with largest sum, (9, 12). Sum = 21
แนวทางการแก้ปัญหา
วิธีแก้ปัญหาอย่างง่ายคือการสร้างคู่ขององค์ประกอบสูงสุดและสูงสุดที่สองของอาร์เรย์
สำหรับสิ่งนี้ เราจะเริ่มต้นองค์ประกอบ max และ secondMax ของอาร์เรย์ด้วยองค์ประกอบที่หนึ่งและสองของอาร์เรย์ ค่าที่มากกว่าคือ max และอีกองค์ประกอบหนึ่งคือ secondMax
ตอนนี้ วนรอบอาร์เรย์จากดัชนี 2 ถึง (n-1) และเปรียบเทียบกับค่า max และ secondMax
ถ้า arr[i] มากกว่า max, secondMax =max และ max =arr[i].
ถ้า arr[i] มากกว่า secondMax, secondMax =arr[i].
และเมื่อสิ้นสุดลูป ให้คืนค่า (max + secondMax)
ตัวอย่าง
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
#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