समस्या कथन
n पॉजिटिव एलिमेंट्स का एक ऐरे दिया गया है हमें सबएरे में मैक्स और मिन एलिमेंट्स के न्यूनतम संभावित योग को ढूंढना है यह देखते हुए कि सबएरे का आकार 2 से बड़ा या बराबर होना चाहिए।
उदाहरण
यदि arr[] = {10, 5, 15, 7, 2, 1, 3} तो "मैक्स + मिन" का योग 3 है जब हम "2 + 1" जोड़ते हैं।
एल्गोरिदम
- किसी भी एलिमेंट को सबएरे में जोड़ने से अधिकतम और न्यूनतम का योग नहीं बढ़ेगा।
- चूंकि ऐरे का मैक्स ऐरे में एलिमेंट्स जोड़ने पर कभी कम नहीं होगा। यह केवल तभी बढ़ेगा जब हम बड़े एलिमेंट्स जोड़ें। इसलिए केवल लंबाई 2 वाले सबएरे पर विचार करना हमेशा ऑप्टिमल होता है।
- इसलिए लंबाई 2 के सभी सबएरे पर विचार करें और योग की तुलना करें और न्यूनतम लें।
उदाहरण
#includeusing 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