समस्या कथन
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