23208 - 扫雷游戏

#include<bits/stdc++.h>
using namespace std;
char flag;
int b[200][200],n,m;
void built(int i,int j){
	if(b[i][j]==-1){
		if(b[i-1][j]!=-1) b[i-1][j]++;
		if(b[i+1][j]!=-1) b[i+1][j]++;
		if(b[i][j-1]!=-1) b[i][j-1]++;
		if(b[i][j+1]!=-1) b[i][j+1]++;
		if(b[i-1][j-1]!=-1) b[i-1][j-1]++;
		if(b[i-1][j+1]!=-1) b[i-1][j+1]++;
		if(b[i+1][j-1]!=-1) b[i+1][j-1]++;
		if(b[i+1][j+1]!=-1) b[i+1][j+1]++;
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>flag;
			if(flag=='*') b[i][j]=-1;
			else b[i][j]=0;
		}
	}
	for(int i=0;i<=m;i++) b[n+1][i]=0;
	for(int i=0;i<=n;i++) b[i][m+1]=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			built(i,j);
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(b[i][j]==-1) cout<<"*";
			else cout<<b[i][j];
		}
		cout<<endl;
	}
	return 0;
}