इस समस्या में, हमें N पूर्णांकों वाली एक सरणी arr[] दी जाती है। हमारा कार्य सरणी में उन जोड़ों को ढूंढना है जिनका योग पहले से सरणी में मौजूद है। हमें उन जोड़ों को ढूंढना है जिनका योग मान = सरणी में एक मान है।
आइए एक उदाहरण से समस्या को समझते हैं,
इनपुट
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
एक अन्य दृष्टिकोण जो अधिक प्रभावी होता है, वह है हैश टेबल का उपयोग करके समस्या को हल करना। हम सभी जोड़ों की जांच करेंगे और फिर उनका योग निकालेंगे और जांचेंगे कि क्या यह सरणी में मौजूद है और इसका ट्रैक रखेंगे। यदि pairCount 0 है, तो "No Such Pairs found !" प्रिंट करें।
यहां, 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