AcWing 462. 扫雷游戏(二维数组)
原题链接
简单
作者:
orange0912
,
2020-05-27 15:32:27
,
所有人可见
,
阅读 567
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <map>
using namespace std;
const int SIZE=110;
char smap[SIZE][SIZE]; // 地图
int step[SIZE][SIZE];// 地雷区
//8个方向的数组
int dx[8]={-1,0,1,0,-1,-1,1,1};
int dy[8]={0,1,0,-1,-1,1,1,-1};
int n,m;
int main()
{
int i,j,k;
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>smap[i][j];
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(smap[i][j]=='?')
{
//计算[i,j]雷区雷的个数
for(k=0;k<8;k++)
{
int a=i+dx[k];
int b=j+dy[k];
if(a>=1&&a<=n&&b>=1&&b<=m&&smap[a][b]=='*') //合法区域
step[i][j]++;
}
}
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(smap[i][j]=='?')
{
cout<<step[i][j];
}
else
cout<<"*";
}
cout<<endl;
}
return 0;
}