ในปัญหานี้ เราได้รับสองอาร์เรย์ บวกและชัดเจน งานของเราคือ หาผลรวมของคู่จากสองอาร์เรย์ที่มีผลรวมสูงสุด .
เราจะหาคู่ที่มีผลรวมสูงสุดกับหนึ่งองค์ประกอบจากแต่ละอาร์เรย์
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
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