Hãy xem xét một ma trận được đưa ra. Chúng ta phải tìm số lượng lỗ hổng trong ma trận. Một phần tử được biểu thị là khoang khi tất cả các phần tử khác xung quanh nó lớn hơn phần tử đó. Vì vậy, nếu ma trận giống như -
4 | 5 | 6 |
7 | 1 | 5 |
4 | 5 | 6 |
Vì vậy, đầu ra là 1.
Chúng tôi chỉ cần kiểm tra các yếu tố xung quanh và đưa ra quyết định.
Ví dụ
#include<iostream> #define MAX 100 using namespace std; int numberOfCavities(int array[][MAX], int n) { int arr[n + 2][n + 2]; int count = 0; for (int i = 0; i < n + 2; i++) { for (int j = 0; j < n + 2; j++) { if ((i == 0) || (j == 0) || (i == n + 1) || (j == n + 1)) arr[i][j] = INT_MAX; else arr[i][j] = array[i - 1][j - 1]; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if ((arr[i][j] < arr[i - 1][j]) && (arr[i][j] < arr[i + 1][j]) && (arr[i][j] < arr[i][j - 1]) && (arr[i][j] < arr[i][j + 1]) && (arr[i][j] < arr[i - 1][j - 1]) && (arr[i][j] < arr[i + 1][j + 1]) && (arr[i][j] < arr[i - 1][j + 1]) && (arr[i][j] < arr[i + 1][j - 1])) count++; } } return count; } int main() { int a[][MAX] = { { 4, 5, 6 }, { 7, 1, 5 }, { 4, 5, 6 }}; int n = 3; cout << "Number of cavities: " << numberOfCavities(a, n); }
Đầu ra
Number of cavities: 1