#include <iostream>
using namespace std;

const int N = 110;
char g[N][N];
int n, m;

int main()
{
    cin >> n >> m;
    for (int i = 0; i < n; i ++ ) cin >> g[i];

    int dx[8] = {-1, -1, -1, 0, 0, 1, 1, 1}, dy[8] = {-1, 0, 1, -1, 1, -1, 0, 1};
    for (int i = 0; i < n; i ++ )
        for (int j = 0; j < m; j ++ )
            if (g[i][j] == '?')
            {
                int cnt = 0;
                for (int k = 0; k < 8; k ++ )
                {
                    int x = i + dx[k], y = j + dy[k];
                    if (x < 0 || x >= n || y < 0 || y >= m) continue;
                    if (g[x][y] == '*') cnt ++ ;
                }
                g[i][j] = cnt + '0';
            }

    for (int i = 0; i < n; i ++ ) puts(g[i]);

    return 0;
}
# 扫雷游戏## 题目描述扫雷游戏是一款十分经典的单机小游戏。在 $n$ 行 $m$ 列的雷区中有一些格子含有地雷称之为地雷格其他格子不含地雷称之为非地雷格。玩家翻开一个非地雷格时该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下找出所有的非地雷格。现在给出 $n$ 行 $m$ 列的雷区中的地雷分布要求计算出每个非地雷格周围的地雷格数。注:一个格子的周围

原文地址: https://www.cveoy.top/t/topic/b3dx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录