算法知识点: 枚举

复杂度:

解题思路:

依次枚举每个空格,然后统计八个方向上的相邻格子有没有地雷即可。

C++ 代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; const int N = 110;
 
int n, m;
char g[N][N];
 
int main()
{
    scanf("%d%d", &n, &m);
    for (int i = 0; i < n; i++) cin >> g[i];
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            if (g[i][j] == '*') cout << '*';
            else
            {
                int s = 0;
                for (int x = i - 1; x <= i + 1; x++)
                    for (int y = j - 1; y <= j + 1; y++)
                        if (x != i || y != j)
                        {
                            if (x >= 0 && x <n && y>= 0 && y < m && g[x][y] == '*') s++;
                        }
                cout << s;
            }
        cout << endl;
    }
 
    return 0;
}


另外,牛客暑期NOIP真题班限时免费报名
报名链接:https://www.nowcoder.com/courses/cover/live/248
报名优惠券:DCYxdCJ