用 C++ 找出矩阵中的孔洞数
假设给定一个矩阵。我们需要找到矩阵中的孔洞数。当元素周围的所有其他元素都大于该元素时,该元素才表示为孔洞。因此,如果矩阵类似于 −
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
广告