题解 | #扫雷#
扫雷
https://www.nowcoder.com/practice/d5f277427d9a4cd3ae60ea6c276dddfd
#include <stdio.h>
#include <stdlib.h>
#define arr(i,j) *(arr+i*(b+2)+j)
int main() {
int a, b,i, j;
scanf("%d %d", &a, &b);
char *arr= calloc((a+2)*(b+2),sizeof(char));
getchar();//我觉得上下这2个getchar才是难点
for (i = 1; i < a +1; i++)
{
for(j=1;j<b+1;j++)
{
scanf("%c", &arr(i,j));
}
getchar();//
}
int x,y;
for (i = 1; i < a +1; i++)
{
for(j=1;j<b+1;j++)
{
if(arr(i,j)=='*')
printf("*");
else
{
int num=0;
for(x=i-1;x<i+2;x++)
{
for(y=j-1;y<j+2;y++)
{
if(arr(x,y)=='*')
num++;
}
}
printf("%d",num);
}
}
printf("\n");
}
free(arr);
return 0;
}