Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผลรวมสูงสุดของผลิตภัณฑ์สองอาร์เรย์ในโปรแกรม C++


ในปัญหานี้ เราได้รับอาร์เรย์สองอาร์เรย์ arr1[] และ arr2[] ขนาด n งานของเราคือสร้างโปรแกรมเพื่อค้นหาผลรวมสูงสุดของสองอาร์เรย์

คำอธิบายปัญหา − เราจำเป็นต้องหาผลรวมสูงสุดของผลิตภัณฑ์ของสองอาร์เรย์ เราจำเป็นต้องหาผลรวมสูงสุดของผลคูณขององค์ประกอบหนึ่งจาก arr1 และองค์ประกอบอื่นๆ จาก arr2

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

อินพุต

arr1[] = {3, 5, 6} arr2[] = {1, 4, 2}

ผลลัพธ์

37

คำอธิบาย

Maximum sum of products: 6*4 + 5*2 + 3*1 = 24 + 10 + 3 = 37

แนวทางการแก้ปัญหา

วิธีแก้ปัญหาอย่างง่ายคือการค้นหาคู่ขององค์ประกอบทั้งหมด fromarr1 และ arr2 แล้วคืนยอดรวมสูงสุด

วิธีแก้ปัญหาที่มีประสิทธิภาพคือการคูณค่าที่ใหญ่ที่สุดจากอาร์เรย์ทั้งสองเข้าด้วยกัน วิธีง่ายๆ ในการทำเช่นนี้คือการจัดเรียงอาร์เรย์จากมากไปหาน้อย จากนั้นคูณองค์ประกอบทั้งหมดสำหรับอาร์เรย์ทั้งสองจากดัชนี 0 ตันและส่งคืนผลรวม

ตัวอย่าง

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

#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