इस समस्या में, हमें एक array दिया जाता है। हमारा काम एक ऐसा प्रोग्राम बनाना है जो एरे में अधिकतम ट्रिपल योग प्राप्त करे यानी तीन तत्वों का सेट खोजें जिसका योग अधिकतम हो।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट - सरणी ={4, 6, 1, 2}
आउटपुट -12
स्पष्टीकरण -
all triplets are : (4, 6, 1) = 4+6+1 = 11 (4, 6, 2) = 4+6+1 = 12 (4, 1, 2) = 4+6+1 = 7 (6, 1, 2) = 4+6+1 = 9 The maximum triplet sum is 12. है
समस्या को हल करने का एक सरल तरीका वह है जिसे हमने उदाहरण में दर्शाया है, जो सभी ट्रिपल जोड़े के लिए योग मान ले रहा है और फिर उनमें से अधिकतम का पता लगा रहा है। लेकिन यह तरीका कारगर नहीं है क्योंकि लंबाई के साथ-साथ तीनों की संख्या बड़ी हो जाएगी।
इस पद्धति में, हम तीन लूप चलाएंगे जो सभी संभावित योग ट्रिपल पाएंगे और यदि इस ट्रिपल का योग मैक्ससम से बड़ा है तो हम इस ट्रिपल योग को मैक्ससम के रूप में प्रारंभ करेंगे।
उदाहरण
हमारे समाधान को स्पष्ट करने के लिए कार्यक्रम,
#include <iostream> using namespace std; int maxSum(int arr[], int n){ int maxSum = 0; int i, j, k; for (i = 0; i < n; i++) for (j = i + 1; j < n; j++) for (k = j + 1; k < n; k++) if (maxSum < arr[i] + arr[j] + arr[k]) maxSum = arr[i] + arr[j] + arr[k]; return maxSum; } int main(){ int arr[] = { 3, 5, 7 ,1, 9, 0 }; int n = sizeof(arr) / sizeof(arr[0]); cout<<"The maximum triplet sum of the array is "<<maxSum(arr, n); return 0; }
आउटपुट
The maximum triplet sum of the array is 21
एक प्रभावी तरीका होगा सरणी को सॉर्ट करना और फिर सरणी के अंतिम तीन तत्वों का योग खोजना जो कि ट्रिपल का अधिकतम योग होगा।
उदाहरण
समाधान का वर्णन करने के लिए कार्यक्रम,
#include <bits/stdc++.h> using namespace std; int maxSum(int arr[], int n) { sort(arr, arr + n); return arr[n - 1] + arr[n - 2] + arr[n - 3]; } int main() { int arr[] = { 3, 5, 9, 1, 2, 8, 7 }; int n = sizeof(arr) / sizeof(arr[0]); cout<<"The maximum triplet sum of the array is "<<maxSum(arr, n); return 0; }
आउटपुट
The maximum triplet sum of the array is 24