ในปัญหานี้ เราได้รับสองอาร์เรย์ arr1[] และ arr2[] ขนาด n ภารกิจของเราคือสร้างโปรแกรมเพื่อหาผลรวมสูงสุดของผลคูณของสองอาร์เรย์
คำอธิบายปัญหา
เราต้องการหาผลรวมสูงสุดของผลคูณของสองอาร์เรย์ เราต้องหาผลรวมสูงสุดของผลคูณของหนึ่งองค์ประกอบจาก arr1 และอีกองค์ประกอบจาก arr2
ตัวอย่าง
อินพุต
arr1[] = {3, 5, 6}
arr2[] = {1, 4, 2}
เอาต์พุต
37
คำอธิบาย
ผลรวมสูงสุดของผลคูณ: 6*4 + 5*2 + 3*1 = 24 + 10 + 3 = 37
แนวทางแก้ปัญหา
วิธีแก้ที่ง่ายคือการหาคู่องค์ประกอบทั้งหมดจาก arr1 และ arr2 แล้วคืนค่าผลรวมสูงสุด
วิธีแก้ที่มีประสิทธิภาพคือการคูณค่าที่ใหญ่ที่สุดจากทั้งสองอาร์เรย์เข้าด้วยกัน วิธีง่ายคือการเรียงอาร์เรย์ตามลำดับจากมากไปน้อย จากนั้นคูณองค์ประกอบทั้งหมดของทั้งสองอาร์เรย์จากดัชนี 0 ถึง n และคืนค่าผลรวมของพวกเขา
ตัวอย่างโค้ด
โปรแกรมสำหรับแสดงการทำงานของวิธีแก้ปัญหาของเรา
#include <bits/stdc++.h>
using namespace std;
int calcMaxSumOfProd(int arr1[], int arr2[], int n){
int maxSum = 0;
sort(arr1, arr1 + n, greater<int>());
sort(arr2, arr2 + n, greater<int>());
for (int i = 0; i < n; i++)
maxSum += (arr1[i] * arr2[i]);
return maxSum;
}
int main() {
int arr1[] = { 3, 5, 6 };
int arr2[] = { 1, 4, 2 };
int n = sizeof(arr1)/sizeof(arr1[0]);
cout << "The maximum Sum of Products of two arrays is " << calcMaxSumOfProd(arr1, arr2, n);
return 0;
}
เอาต์พุต
The maximum Sum of Products of two arrays is 37