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

หเซลล์ที่ปลอดภัยในแมทริกซ์ใน C++

สมมติว่ามีแมทริกซ์ mat[][] มีตัวอักษร Z และ P Z คือโซมบี้ และ P คือพืช ตัวอักษร * คือที่ว่างเปล่า โซมบี้สามารถโจมตีพืชได้เมื่อพืชอยู่ติดกัน เราต้องหาจำนวนพืชที่ปลอดภัยจากโซมบี้ สมมติว่าแมทริกซ์เป็นแบบด้านล่าง:

หเซลล์ที่ปลอดภัยในแมทริกซ์ใน C++

ดังนั้นมีพืชที่ปลอดภัยเพียงสองต้น

เราจะเดินทางผ่านองค์ประกองของแมทริกซ์ทีละตัว เมื่อองค์ประกอบปัจจุบันเป็นพืช ให้ตรวจสอบว่าพืชถูกล้อมรอบด้วยโซมบี้หรือไม่ หากไม่ใช่ ให้เพิ่มจำนวนนับ

ตัวอย่าง

#include <iostream> 
using namespace std; 

bool isZombie(int i, int j, int r, int c, string mat[]) {
    if (i < 0 || j < 0 || i >= r || j >= c || mat[i][j] != 'Z')
        return false;
    return true;
}

int countSafeCells(string matrix[], int row, int col) {
    int i, j, count = 0;
    for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            if (matrix[i][j] == 'P') {
                if (!isZombie(i - 1, j - 1, row, col, matrix) && !isZombie(i - 1, j, row, col, matrix)
                    && !isZombie(i - 1, j + 1, row, col, matrix) && !isZombie(i, j - 1, row, col, matrix)
                    && !isZombie(i, j, row, col, matrix) && !isZombie(i, j + 1, row, col, matrix)
                    && !isZombie(i + 1, j - 1, row, col, matrix) && !isZombie(i + 1, j, row, col, matrix)
                    && !isZombie(i + 1, j + 1, row, col, matrix)) {
                    count++;
                }
            }
        }
    }
    return count;
}

int main() {
    string mat[] = { "**P*", "Z***", "*P**", "***P" };
    int row = sizeof(mat) / sizeof(mat[0]);
    int col = mat[0].length();
    cout << "Number of safe cells: " << countSafeCells(mat, row, col);
}

ผลลัพธ์

Number of safe cells: 2