题目:
就是判断当前是不是地雷,如果是的话既让另一个二维数组为1,否则的话就是零,这应该是构造吧
然后再用一个二维for来输出,如果当前是地雷的话,就不管他,直接输出,否则的话就cout里面加上八个方向:v[i][j+1]+v[i][j-1]+v[i+1][j].......
特别注意的话,要从开始1开始到n(必须
上代码:
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
using namespace std;
int n,m,v[10005][10005];
char c[10005][10005];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(c[i][j]=='*'){
v[i][j]=1;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(c[i][j]=='*'){
cout<<"*";
}
else printf("%d",v[i][j+1]+v[i][j-1]+v[i+1][j]+v[i+1][j+1]+v[i+1][j-1]+v[i-1][j-1]+v[i-1][j+1]+v[i-1][j]);
}
cout<<endl;
}
return 0;
}