Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm số chỗ trống trong ma trận trong C ++

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