题解 | 扫雷游戏
2026-09-07 23:04:10
发布于:广东
6阅读
0回复
0点赞
#include<iostream>
using namespace std;
//雷区的长宽
short n,m;
//记录雷区的信息
char map[103][103];
//cnt[i][j]统计相邻地雷数量, cnt[i][j]=-1表示格子(i,j)是地雷格
short cnt[103][103];
//下面两行是偏移量数组, map[i+dir_x[k]][j+dir_y[k]]就是map[i][j]的邻居
short dir_x[8]={1,0,-1,0,-1,-1,1,1};
short dir_y[8]={0,1,0,-1,-1,1,-1,1};
int main(){
//?空地 *地雷
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>map[i][j];
//如果格子(i,j)是地雷格, 那么在cnt中记录
if(map[i][j]=='*')cnt[i][j]=-1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
for(int k=0;k<8;k++){
//判断(i,j)格的这个邻居是否是地雷格
if(cnt[i+dir_x[k]][j+dir_y[k]]==-1&&cnt[i][j]!=-1){
cnt[i][j]++;//统计数量
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
//是地雷格直接输出星号
if(cnt[i][j]==-1)cout<<"* ";
//否则输出相邻地雷格的数量
else cout<<cnt[i][j]<<' ';
}
cout<<'\n';//记得换行
}
return 0;
}
这里空空如也







有帮助,赞一个