题解在此
2026-07-13 17:05:47
发布于:浙江
1阅读
0回复
0点赞
基本思路:
按照题意模拟即可,建立一个八方向数组,每个点遍历过去,如果是,遍历八方向并统计个数,最后输出。
AC代码:
#include <iostream>
using namespace std;
const int N=105;
char a[N][N];
int b[N][N];
int x[]={-1,-1,-1,0,0,1,1,1};
int y[]={-1,0,1,-1,1,-1,0,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];
}
}//输入
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++){
if (a[i][j]=='?'){//如果是?,八方向遍历
for (int k=0;k<=7;k++){
int nx,ny;
nx=i+x[k];
ny=j+y[k];//八方向的点
if (a[nx][ny]=='*'){
b[i][j]++;
}//如果是地雷,数量+1(b数组统计个数)
}
cout<<b[i][j];
}else{
cout<<'*';//如果不是?就是地雷,就原样输出*
}
}
cout<<endl;
}
return 0;
}
这里空空如也








有帮助,赞一个