พิจารณาหนึ่งเมทริกซ์ที่ได้รับ เราต้องหาจำนวนโพรงในเมทริกซ์ องค์ประกอบหนึ่งจะแสดงเป็นโพรงเมื่อองค์ประกอบอื่นทั้งหมดที่อยู่รอบ ๆ ตัวนั้นมากกว่าองค์ประกอบ ดังนั้นหากเมทริกซ์เป็นเหมือน −
| 4 | 5 | 6 |
| 7 | 1 | 5 |
| 4 | 5 | 6 |
ผลลัพธ์ที่ได้คือ 1
เราเพียงแค่ตรวจสอบองค์ประกอบโดยรอบและตัดสินใจ
ตัวอย่าง
#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);
} ผลลัพธ์
Number of cavities: 1