链接
知识点
暴力,模拟
思路
定义两个数组二维数组mp,ans,mp用来存储初始的地雷位置,ans用来存储每个方格周围地雷的数量,按照题目的要求,把数据输入输出,但最重要的是,扫描每个方格,计算周围地雷的数量。扫描九宫格,具体方法见下列代码。
代码
#include<bits/stdc++.h>
using namespace std;
const int N=150;
int mp[N][N];
int ans[N][N];
int main(){
int n,m;
cin >>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>mp[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(mp[i][j]==1){
ans[i][j]=9;
continue;
}
//扫描九宫格 计算方格周围的地雷的数量
for(int x=max(1,i-1);x<=min(n,i+1);x++){
for(int y=max(1,j-1);y<=min(m,j+1);y++){
if(mp[x][y]){
ans[i][j]++;
}
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<ans[i][j]<<" ";
}
cout<<endl;
}
return 0;
}