समस्या विवरण
N×M मैट्रिक्स और गुणनफल K दिया गया है। जांचें कि क्या मैट्रिक्स में कोई जोड़ी है जिसका गुणनफल K है।
उदाहरण: 4×4 मैट्रिक्स, K=42 → जोड़ी (6, 7) मौजूद है
हल: हैशिंग
- मैट्रिक्स ट्रैवर्स करते हुए हैश सेट में तत्व डालें
- प्रत्येक तत्व के लिए: यदि K वर्तमान से विभाज्य है और K/वर्तमान सेट में है → जोड़ी मिल गई
उदाहरण कोड
#include <iostream>
#include <unordered_set>
#define N 4
#define M 4
using namespace std;
bool isPairPresent(int matrix[N][M], int K) {
unordered_set 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;
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))
cout << "NO PAIR EXIST";
else
cout << "Pair is present";
return 0;
}
आउटपुट
Pair is present