想问下大佬们我这个代码怎么统计不到两颗地雷啊
查看原帖
想问下大佬们我这个代码怎么统计不到两颗地雷啊
1078242
bata22368030楼主2023/11/5 10:16
#include <iostream>
#include <string>
using namespace std;



int main() {
    int n, m;
    cin >> n >> m;
    char a[110][110], b[110][110];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> a[i][j];
            if (a[i][j] == '*') {
                b[i][j] = a[i][j];
            } else if(a[i][j]=='?'){
               
                    int count = 0;
                    if ((i + 1) >= 0 && (j + 1) >= 0&&a[i + 1][j + 1] == '*') {
                        count++;
                    }
                    if ((i + 1) >= 0 && j >= 0 &&a[i + 1][j ] == '*' ) {
                        count++;
                    }
                    if (i >= 0 && (j + 1) >= 0 &&a[i ][j + 1] == '*') {
                        count++;
                    }
                    if ((i - 1) >= 0 && (j - 1) >= 0 &&a[i -1][j -1] == '*') {
                        count++;
                    }
                    if ((i - 1) >= 0 && j >= 0&&a[i -1][j ] == '*' ) {
                        count++;
                    }
                    if (i >= 0 && (j - 1) >= 0&&a[i ][j -1] == '*' ) {
                        count++;
                    }
                    if ((i + 1) >= 0 && (j - 1) >= 0&&a[i + 1][j -1] == '*' ) {
                        count++;
                    }
                    if ((i - 1) >= 0 && (j + 1) >= 0&&a[i -1][j +1] == '*' ) {
                        count++;
                    }
                    b[i][j] = count+'0';
            }
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << b[i][j];
        }
        cout << endl;
    }

    return 0;
}
2023/11/5 10:16
加载中...