^_^
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;
}
这里空空如也
有帮助,赞一个