#include<bits/stdc++.h> using namespace std; int a[2000][2000]; int main(){ int n,m; int Bomb; char x; cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>x; if(x=='*'){ a[i][j]=-1;//Bomb! }else{ a[i][j]=1;//No Bomb } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]==1){ Bomb=0; for(int k=-1;k<=1;k++){ for(int l=-1;l<=1;l++){ if(a[i+k][j+l]==-1){ Bomb+=1; } } } a[i][j]=Bomb; } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]!=-1){ cout<<a[i][j]; }else{ cout<<"*"; } } cout<<endl; } return 0; }
不要把x定义为string,必须是char。因为用string会一直读取到换行: x="*.*."