檢查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 % matrix[i, j]) 為假,且雜湊表中包含k/matrix[i, j]
如果存在,則返回true,否則將當前元素插入雜湊表。
如果沒有找到任何對,則返回false。
示例
#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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP