C ++程序中数组的最小和第二个最小的最大和

在这个问题中,我们得到了一个数组arr []。我们的任务是创建一个程序来查找数组中最小和第二最小的最大和。

问题描述-我们需要找到数组之和子数组的最小和第二个最小元素的和。并返回所有此类子数组总和的最大值。

示例

让我们举个例子来了解这个问题,

输入项

arr[] = {3, 5, 4, 2, 9, 1, 6}

输出结果

11

说明

在所有可能的子数组中,
{2, 9} 具有最小元素的最大总和。
Sum = 2 + 9 = 11

解决方法

解决该问题的简单方法是生成所有子数组。找到最小和第二小的元素,求和。返回所有的最大和。

另一个更有效的解决方案是基于对示例的观察。我们需要找到最大总和,该总和将是数组中两个连续元素对的总和。我们将找到最大和对。

算法

初始化-

maxSum = −1

第1步-

loop i −> 0 to n−1

步骤1.1 -

if maxSum < (arr[i] + arr[i+1]). Then, maxSum = (arr[i] +
arr[i+1])

第2步-

Return maxSum.

示例

该程序说明了我们解决方案的工作原理,

#include <iostream>
using namespace std;
int calcMaxSumPairs(int arr[], int n) {
   int maxSum = −1;
   for (int i=0; i< (n − 1); i++)
   if(maxSum < (arr[i] + arr[i + 1]))
   maxSum = (arr[i] + arr[i + 1]);
   return maxSum;
}
int main() {
   int arr[] = {3, 4, 2, 9, 5, 6};
   int n = sizeof(arr) / sizeof(int);
   cout<<"最小值与最大值之和数组是"<<calcMaxSumPairs(arr, n);
   return 0;
}

输出结果

最小值与最大值之和数组是 14
猜你喜欢