扫雷游戏

· · 题解

直接在数组上处理!

其实不烦,只要加一层边框,就好啦~~~

没错就是酱紫滴:

    int n, m;
    cin >> n >> m;
    char a[n + 1][m + 1];
    int s[n + 2][m + 2] = {0};

其他的就很简单啦,诺:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    char a[n + 1][m + 1];
    int s[n + 2][m + 2] = {0};
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            cin >> a[i][j];
            if (a[i][j] != '*') {
                continue;
            }
            s[i - 1][j - 1]++;
            s[i - 1][j]++;
            s[i - 1][j + 1]++;
            s[i][j - 1]++;
            s[i][j + 1]++;
            s[i + 1][j - 1]++;
            s[i + 1][j]++;
            s[i + 1][j + 1]++; 
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            if (a[i][j] == '*') {
                cout << '*';
            } else {
                cout << s[i][j];
            }
        }
        cout << endl;
    }
    return 0;
}

附录(给菜鸟看) 解释一下这段

    s[i - 1][j - 1]++;
    s[i - 1][j]++;
    s[i - 1][j + 1]++;
    s[i][j - 1]++;
    s[i][j + 1]++;
    s[i + 1][j - 1]++;
    s[i + 1][j]++;
    s[i + 1][j + 1]++; 
如果中间的那个格子是a[x][y],则周围是: a[x - 1][y - 1] a[x - 1][y] a[x - 1][y + 1]
a[x][y -1] a[x][y] a[x][y + 1]
a[x + 1][y - 1] a[x + 1][y] a[x + 1][y + 1]

OK,今天内容到此结束!(:з」∠)