इस समस्या में, हमें एक array 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