Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบว่ามีคู่ของผลิตภัณฑ์ที่ระบุอยู่ในเมทริกซ์ใน C++ . หรือไม่


เรามีเมทริกซ์ของลำดับ N x M หนึ่งตัว และผลิตภัณฑ์ K ภารกิจคือตรวจสอบว่าคู่ที่มีผลิตภัณฑ์ที่ระบุมีอยู่ในเมทริกซ์หรือไม่

สมมติว่าเมทริกซ์อยู่ด้านล่าง -

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