水题。统计一下周围有几个雷。
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int n,m; char s[110][110]; char ans[110][110]; bool P(int a,int b) { if(a>=0&&a<=n-1&&b>=0&&b<=m-1&&s[a][b]=='*') return 1; return 0; } int f(int a,int b) { int sum=0; if(P(a-1,b-1)) sum++; if(P(a-1,b)) sum++; if(P(a-1,b+1)) sum++; if(P(a,b-1)) sum++; if(P(a,b+1)) sum++; if(P(a+1,b-1)) sum++; if(P(a+1,b)) sum++; if(P(a+1,b+1)) sum++; return sum; } int main() { while(~scanf("%d%d",&n,&m)) { if(n==0&&m==0) break; for(int i=0;i<n;i++) scanf("%s",s[i]); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(s[i][j]=='*') ans[i][j]='*'; else ans[i][j]=f(i,j)+'0'; } } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { printf("%c",ans[i][j]); } printf(" "); } printf(" "); } return 0; }