समस्या कथन
n सकारात्मक तत्वों की एक सरणी को देखते हुए हमें एक उप-सरणी में अधिकतम और न्यूनतम तत्वों का न्यूनतम संभव योग खोजने की आवश्यकता है, यह देखते हुए कि उप-सरणी का आकार 2 के बराबर से अधिक होना चाहिए।
उदाहरण
अगर arr[] ={10, 5, 15, 7, 2, 1, 3} तो "2 + 1" जोड़ने पर "अधिकतम + मिनट" का योग 3 होता है।
एल्गोरिदम
- उपसरणी में किसी भी तत्व को जोड़ने से अधिकतम और न्यूनतम का योग नहीं बढ़ेगा।
- चूंकि सरणी में तत्वों को जोड़ने पर किसी सरणी का अधिकतम कभी कम नहीं होगा। यह तभी बढ़ेगा जब हम बड़े तत्व जोड़ेंगे। इसलिए केवल 2 लंबाई वाले उप-सरणी पर विचार करना हमेशा इष्टतम होता है।
- इसलिए लंबाई 2 के सभी उप-सरणी पर विचार करें और योग की तुलना करें और न्यूनतम एक लें।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int getMaxSum(int *arr, int n) {
if (n < 2) {
return -1;
}
int result = arr[0] + arr[1];
for (int i = 1; i + 1 < n; ++i) {
result = min(result, (arr[i] + arr[i + 1]));
}
return result;
}
int main() {
int arr[] = {10, 5, 15, 7, 2, 1, 3};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Maximum sum = " << getMaxSum(arr, n) << endl;
return 0;
} जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है -
आउटपुट
Maximum sum = 3