链接
用bool 数组标记当前位置是否是地雷格,如果是地雷格,输出 '*',否则输出周围地雷的个数.
数组开大一点,防止越界
Code:
#include <bits/stdc++.h>
using ll = long long;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n, m;
std::cin >> n >> m;
std::vector<std::vector<char>> map(n + 2, std::vector<char> (m + 2));
std::vector<std::vector<bool>> mark(n + 2, std::vector<bool> (m + 2));
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
std::cin >> map[i][j];
if (map[i][j] == '*') {
mark[i][j] = true;
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (mark[i][j]) {
std::cout << '*';
} else {
std::cout << (mark[i][j + 1] + mark[i][j - 1] + mark[i - 1][j] + mark[i + 1][j] + mark[i - 1][j + 1] + mark[i + 1][j + 1] +
mark[i - 1][j - 1] + mark[i + 1][j - 1]);
}
}
std::cout << "\n";
}
return 0;
}