You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.5 KiB

#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
int a[100][100] = {0};
cin >> n >> m;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
char c;
cin >> c;
if (c == '*') a[i][j] = -1;
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
if (a[i][j] == -1) {
//上
if (i - 1 >= 0 && a[i - 1][j] >= 0) a[i - 1][j]++;
//下
if (i + 1 < n && a[i + 1][j] >= 0) a[i + 1][j]++;
//左
if (j - 1 >= 0 && a[i][j - 1] >= 0) a[i][j - 1]++;
//右
if (j + 1 < m && a[i][j + 1] >= 0) a[i][j + 1]++;
//左上
if (i - 1 >= 0 && j - 1 >= 0 && a[i - 1][j - 1] >= 0) a[i - 1][j - 1]++;
//左下
if (i + 1 < n && j - 1 >= 0 && a[i + 1][j - 1] >= 0) a[i + 1][j - 1]++;
//右上
if (i - 1 >= 0 && j + 1 < m && a[i - 1][j + 1] >= 0) a[i - 1][j + 1]++;
//右下
if (i + 1 < n && j + 1 < m && a[i + 1][j + 1] >= 0) a[i + 1][j + 1]++;
}
}
}
//输出
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
if (a[i][j] == -1)
cout << "*" << " ";
else
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}