Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผลรวมสูงสุดของค่าที่น้อยที่สุดและน้อยที่สุดเป็นอันดับสองในอาร์เรย์ในโปรแกรม C++


ในปัญหานี้ เราได้รับอาร์เรย์ arr[] งานของเราคือสร้างโปรแกรมเพื่อค้นหาผลรวมสูงสุดของค่าที่น้อยที่สุดและน้อยที่สุดเป็นอันดับสองในอาร์เรย์

คำอธิบายปัญหา − เราจำเป็นต้องหาผลรวมขององค์ประกอบที่เล็กที่สุดและน้อยที่สุดเป็นอันดับสองของ subarray ผลรวมของอาร์เรย์ และคืนค่าสูงสุดของผลรวมของ subarray ดังกล่าวทั้งหมด

ตัวอย่าง

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

อินพุต

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