题解 | #扫雷#
扫雷
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; }