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

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

ในปัญหานี้ เราได้รับสองอาร์เรย์ 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