C++程序中两个数组乘积的最大和
在这个问题中,我们得到了两个大小为n的数组arr1[]和arr2[]。我们的任务是创建一个程序来找到两个数组乘积的最大和。
问题描述 − 我们需要找到两个数组乘积的最大和。我们需要找到从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
解决方案
一个简单的解决方案是找到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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP