Run ID:109799

提交时间:2025-02-11 19:50:27

#include <iostream> #include <vector> using namespace std; int main() { int n, m; cin >> n >> m; vector<vector<char>> grid(n, vector<char>(m)); vector<vector<int>> mineCount(n, vector<int>(m, 0)); // 读取输入的雷区 for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { cin >> grid[i][j]; if (grid[i][j] == '*') { mineCount[i][j] = -1; // 用-1表示地雷 } } } // 计算每个非地雷格子周围的地雷数 for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { if (mineCount[i][j] == -1) { continue; // 当前格子是地雷,跳过 } int count = 0; for (int di = -1; di <= 1; ++di) { for (int dj = -1; dj <= 1; ++dj) { int ni = i + di, nj = j + dj; if (ni >= 0 && ni < n && nj >= 0 && nj < m && grid[ni][nj] == '*') { count++; } } } mineCount[i][j] = count; } } // 输出结果 for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { if (mineCount[i][j] == -1) { cout << '*'; } else { cout << mineCount[i][j]; } } cout << endl; } return 0; }