^_^
2025-08-12 21:38:59
发布于:浙江
2阅读
0回复
0点赞
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
// 读取雷区布局
vector<string> grid(n);
for (int i = 0; i < n; i++) {
    cin >> grid[i];
}
// 8个方向的偏移量:上、下、左、右、左上、右上、左下、右下
int dirs[8][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1},
                  {-1, -1}, {-1, 1}, {1, -1}, {1, 1}};
// 计算并输出结果
for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
        // 如果是地雷,直接输出
        if (grid[i][j] == '*') {
            cout << '*';
        } else {
            // 计算周围地雷数量
            int count = 0;
            for (int d = 0; d < 8; d++) {
                int x = i + dirs[d][0];
                int y = j + dirs[d][1];
                // 检查坐标是否有效且该位置是地雷
                if (x >= 0 && x < n && y >= 0 && y < m && grid[x][y] == '*') {
                    count++;
                }
            }
            cout << count;
        }
    }
    cout << endl;
}
return 0;
}
这里空空如也







有帮助,赞一个