हमारे पास ऑर्डर एन एक्स एम का एक मैट्रिक्स है और एक उत्पाद के। कार्य यह जांचना है कि दिए गए उत्पाद के साथ एक जोड़ी मैट्रिक्स में मौजूद है या नहीं।
मान लीजिए कि एक मैट्रिक्स नीचे जैसा है -
1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 |
अब यदि K 42 है, तो एक जोड़ी है जैसे (6, 7)
इस समस्या को हल करने के लिए, हम हैशिंग का उपयोग करेंगे। हम मैट्रिक्स के सभी तत्वों को लेकर हैश टेबल बनाएंगे। हम मैट्रिक्स को ट्रैवर्स करना शुरू करेंगे, ट्रैवर्सिंग करते समय, जांचें कि क्या मैट्रिक्स का वर्तमान तत्व दिए गए उत्पाद से विभाज्य है, और जब उत्पाद K को वर्तमान तत्व से विभाजित किया जाता है, तो लाभांश भी हैश तालिका में मौजूद होगा। तो आवश्यक शर्त इस प्रकार है -
(k mod matrix[i, n]) गलत है, और हैश तालिका में k/matrix[i, j]
हैयदि मौजूद है, तो सही लौटें, अन्यथा वर्तमान तत्व को हैश तालिका में डालें।
अगर कोई जोड़ा नहीं मिला है, तो झूठी वापसी करें।
उदाहरण
#include <iostream> #include <unordered_set> #define N 4 #define M 4 using namespace std; bool isPairPresent(int matrix[N][M], int K) { unordered_set<int> s; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { if ((K % matrix[i][j] == 0) && (s.find(K / matrix[i][j]) != s.end())) { return true; } else { s.insert(matrix[i][j]); } } } return false; } int main() { int matrix[N][M] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}; int k = 42; if (isPairPresent(matrix, k) == false) cout << "NO PAIR EXIST"; else cout << "Pair is present"; }
आउटपुट
Pair is present