इस समस्या में, हमें एन पूर्णांक से मिलकर एक सरणी गिरफ्तारी [] दी जाती है। हमारा कार्य एक सरणी में जोड़े ढूंढना है जिसका योग पहले से ही सरणी में मौजूद है। हमें योग मूल्य =सरणी में एक मान के साथ जोड़े खोजने की जरूरत है
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
arr[] = {1, 2, 4, 6, 7}
आउटपुट
(1, 6), (2, 4)
स्पष्टीकरण
जोड़े (1, 6) के लिए, मानों का योग 7 है जो सरणी में मौजूद है।
जोड़े (2, 4) के लिए, मानों का योग 6 है जो सरणी में मौजूद है।
समाधान दृष्टिकोण
समस्या का एक सरल समाधान है, सरणी के तत्वों का उपयोग करके सभी युग्मों को खोजना। फिर पारिर के मूल्यों के योग की गणना करें। सरणी में इस योग मान को खोजें, यदि मौजूद हो तो प्रिंट करें।
साथ ही, हमारे पास युग्मों की संख्या के लिए एक काउंटर होगा। और अगर यह 0 है, तो हम कोई जोड़े नहीं मिले प्रिंट करेंगे।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <iostream> using namespace std; void findSumPairsArr(int arr[], int n){ int pairCount = 0; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = 0; k < n; k++) { if (arr[i] + arr[j] == arr[k]) { cout<<"( "<<arr[i]<<", "<<arr[j]<<" ), sum = "<<(arr[i] + arr[j])<<"\n"; pairCount++; } } } } if (!pairCount) cout<<"No Such Pairs found !"; } int main() { int arr[] = { 1, 2, 4, 6, 7 }; int n = sizeof(arr) / sizeof(arr[0]); cout<<"Pairs in array whose sum already exists in array : \n"; findSumPairsArr(arr, n); return 0; }
आउटपुट
सरणी में जोड़े जिनका योग पहले से ही सरणी में मौजूद है -
( 1, 6 ), sum = 7 ( 2, 4 ), sum = 6
एक अन्य दृष्टिकोण जो अधिक प्रभावी होता है वह है हैश तालिका का उपयोग करके समस्या को हल करना। हम सभी पेरिसों की जांच करेंगे और फिर उनकी राशि की गणना करेंगे और जांचेंगे कि यह सरणी में मौजूद है या नहीं और इसका ट्रैक रखें। यदि जोड़ी की संख्या 0 है, तो "ऐसे कोई जोड़े नहीं मिले!" प्रिंट करें।
यहाँ, c में हैश तालिका का कार्यान्वयन unordered_set का उपयोग करके किया जाता है।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <bits/stdc++.h> using namespace std; void findSumPairsArr(int arr[], int n) { unordered_set<int> HT; for (int i = 0; i < n; i++) HT.insert(arr[i]); int pairCount = 0; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (HT.find(arr[i] + arr[j]) != HT.end()) { cout<<"( "<<arr[i]<<", "<<arr[j]<<" ), sum = "<<(arr[i] + arr[j])<<"\n"; pairCount ++; } } } if (!pairCount) cout<<"No Such Pairs found !"; } int main() { int arr[] = {1, 2, 4, 6, 7 }; int n = sizeof(arr) / sizeof(arr[0]); cout<<"Pairs in array whose sum already exists in array : \n"; findSumPairsArr(arr, n); return 0; }
आउटपुट
सरणी में जोड़े जिनका योग पहले से ही सरणी में मौजूद है -
( 1, 6 ), sum = 7 ( 2, 4 ), sum = 6