मान लीजिए कि n संख्याओं की एक सरणी है। हमें तीन संख्याएँ ज्ञात करनी हैं, जैसे कि दो तत्वों का योग तीसरे के समान है। तो अगर सरणी [5, 32, 1, 7, 10, 50, 19, 21, 2] की तरह है, तो आउटपुट 21, 2, 19 होगा। यदि ऐसा कोई तत्व नहीं मिला है, तो उस संदेश को प्रदर्शित करें।
इसे हल करने के लिए, हम कुछ चरणों का पालन इस प्रकार करेंगे -
-
दिए गए सरणी को क्रमबद्ध करें
-
फिर अंतिम तत्व से सबसे बड़े तत्व को ठीक करना शुरू करें और अन्य दो संख्याओं को खोजने के लिए सरणी को पार करें जो तीसरे तत्व के योग हैं।
-
दो अंक j और k लें, j पहले से है, k अंतिम से है, i-1 से दो संख्याओं में से सबसे छोटी संख्या ज्ञात करने के लिए शेष दो संख्याओं में से सबसे बड़ी संख्या ज्ञात करें।
-
यदि दोनों संख्याओं का योग अभी भी Arr[i] से कम है, तो हमें दो संख्याओं के योग का मान बढ़ाना होगा, जिससे j सूचक को बढ़ाना होगा, ताकि Arr[j] + Arr[ का मान बढ़ाया जा सके। कश्मीर]
-
यदि दोनों संख्याओं का योग Arr[i] से अधिक है, तो हमें दो संख्याओं के योग के मान को कम करने की आवश्यकता है, जिससे सूचक k घट जाता है, जिससे Arr[j] + Arr[k का समग्र मान घट जाता है। ]
उदाहरण
#include<iostream> #include<algorithm> #define N 5 using namespace std; void getValueTriplet(int arr[], int n) { sort(arr, arr + n); for (int i = n - 1; i >= 0; i--) { int j = 0; int k = i - 1; while (j < k) { if (arr[i] == arr[j] + arr[k]) { cout << "The numbers are " << arr[i] << " " << arr[j] << " " << arr[k] << endl; return; } else if (arr[i] > arr[j] + arr[k]) j += 1; else k -= 1; } } cout << "No such triplet exists"; } int main() { int arr[] = { 5, 32, 1, 7, 10, 50, 19, 21, 2 }; int n = sizeof(arr) / sizeof(arr[0]); getValueTriplet(arr, n); }
आउटपुट
The numbers are 21 2 19