Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm số lượng hốc (cavities) trong ma trận trong C++


Cho ma trận, tìm số hốc: phần tử nhỏ hơn tất cả 8 hàng xóm. Ví dụ ma trận 3x3 có 1 hốc ở giữa.

Mở rộng ma trận thêm viền giá trị INT_MAX, sau đó kiểm tra từng phần tử so với 8 hàng xóm.

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); }

Kết quả

Number of cavities: 1