题目链接:P2670 扫雷游戏
输入输出样例:
输入:
3 3
*??
???
?*?
输出:
*10
221
1*1
寻找雷区,在雷区周边八格统一加1记录
#include<stdio.h>
#define N 110
int n, m;
int d[N][N];
char map[N][N];
int dx[] = {
-1, -1, 0, 1, 1, 1, 0, -1}, dy[] = {
0, 1, 1, 1, 0, -1, -1, -1};
int main(){
scanf("%d%d", &n, &m);
for(int i = 0; i < n; i ++ ) scanf("%s", map[i]);
for(int i = 0; i < n ; i ++ )
for(int j = 0; j < m; j ++ ){
if(map[i][j] == '*'){
for(int k = 0; k < 8; k ++ ){
int a = i + dx[k], b = j + dy[k];
if(a >= 0 && b >= 0) d[a][b]++;
}
}
}
for(int i = 0; i < n; i ++ ){
for(int j = 0; j < m; j ++ ){
if(map[i][j] == '?') printf("%d", d[i][j]);
else printf("%c", map[i][j]);
}
puts("");
}
return 0;
}