मान लीजिए कि हमारे पास एक सरणी ए है, उस सरणी से, हमें दो जोड़े (ए, बी) और (सी, डी) चुनना है, जैसे कि एबी =सीडी। मान लीजिए कि सरणी A =[3, 4, 7, 1, 2, 9, 8] है। आउटपुट जोड़े (4, 2) और (1, 8) हैं। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- i :=0 से n-1 के लिए, करें
- जे के लिए:=i + 1 से n-1 तक, करें
- उत्पाद प्राप्त करें =एआर [i] * एआर [जे]
- यदि उत्पाद हैश तालिका में मौजूद नहीं है, तो हैश[उत्पाद] :=(i, j)
- यदि उत्पाद हैश तालिका में मौजूद है, तो पिछले और वर्तमान तत्वों को प्रिंट करें।
- जे के लिए:=i + 1 से n-1 तक, करें
उदाहरण
#include <iostream> #include <unordered_map> using namespace std; void displayPairs(int arr[], int n) { bool found = false; unordered_map<int, pair < int, int > > Hash; for (int i=0; i<n; i++) { for (int j=i+1; j<n; j++) { int prod = arr[i]*arr[j]; if (Hash.find(prod) == Hash.end()) Hash[prod] = make_pair(i,j); else{ pair<int,int> pp = Hash[prod]; cout << "(" << arr[pp.first] << ", " << arr[pp.second] << ") and (" << arr[i]<<", "<<arr[j] << ")"<<endl; found = true; } } } if (found == false) cout << "No pairs have Found" << endl; } int main() { int arr[] = {1, 2, 3, 4, 5, 6, 7, 8}; int n = sizeof(arr)/sizeof(int); displayPairs(arr, n); }
आउटपुट
(1, 6) and (2, 3) (1, 8) and (2, 4) (2, 6) and (3, 4) (3, 8) and (4, 6)