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<<"两个阵列的最大乘积之和为 "<<calcMaxSumOfProd(arr1, arr2, n);

   return 0;

}

输出结果

两个阵列的最大乘积之和为 37

以上是 C ++程序中两个数组的最大乘积和 的全部内容, 来源链接: utcz.com/z/356725.html

回到顶部