比较简单的二维数组的题,利用了dx和dy来存偏移量
#include<iostream>
using namespace std;
char a[105][105];
//dx,dy来看周围有没有雷
int dx[8]={-1,1,0,0,-1,1,1,-1};
int dy[8]={0,0,-1,1,-1,1,-1,1};
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
if(a[i][j]=='?')a[i][j]='0'; //预处理把?先变为0
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
//不是雷就看周围有没有雷
if(a[i][j]!='*'){
int x=i,y=j;
for(int k=0;k<=7;k++){
x+=dx[k];
y+=dy[k];
if(x>=1&&x<=n&&y>=1&&y<=m&&a[x][y]=='*')
a[i][j]+=1;
x=i;
y=j;
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
cout<<a[i][j];
cout<<endl;
}
return 0;
}