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

更新於: 2020-12-09

418 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告