在这个问题中,我们得到了一个数组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