C++程序中数组中最小值和第二小值的最大和
在这个问题中,我们给定一个数组 arr[]。我们的任务是创建一个程序来查找数组中最小值和第二小值的最大和。
问题描述 - 我们需要找到数组的子数组的最小元素和第二小元素的和。并返回所有此类子数组和的最大值。
示例
让我们举个例子来理解这个问题,
输入
arr[] = {3, 5, 4, 2, 9, 1, 6}
输出
11
解释
Their out of all subarrays possible, {2, 9} has a maximum sum of smallest elements. 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<<"The maximum sum of smallest and second smallest in an array is "<<calcMaxSumPairs(arr, n); return 0; }
输出
The maximum sum of smallest and second smallest in an array is 14
广告