विचार करें कि एक मैट्रिक्स दिया गया है। हमें मैट्रिक्स में गुहाओं की संख्या का पता लगाना है। एक तत्व को कैविटी के रूप में निरूपित किया जाता है जब उसके आस-पास के सभी तत्व तत्व से बड़े होते हैं। तो अगर मैट्रिक्स की तरह है -
| 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