Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาจำนวนรูพรุนในแมทริกซ์ใน C++

พิจารณาแมทริกซ์หนึ่ง เราต้องหาจำนวนรูพรุน (Cavities) ในแมทริกซ์ องค์ประกอบหนึ่งถูกแทนว่าเป็นรูพรุนเมื่อองค์ประกอบอื่นๆ ที่ล้อมรอบมันมีค่ามากกว่ามัน ดังนั้นถ้าแมทริกซ์เป็นแบบด้านล่าง:

456
715
456

ผลลัพธ์คือ 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