[CodeForces984B]Minesweeper
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CodeForces984B]Minesweeper相关的知识,希望对你有一定的参考价值。
?????????ios ret TE def IV names ?????? mat str
Translate
?????????????????????????????????????????????????????????????????????????????????????????? ??????????????????????????????????????????
- ???????????????????????????????????????????????????
- ???????????????????????????
??????:
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????(0)????????????.???????????????????????????????????????????????????????????????????????????????????????????????????????????????
Code
#include<iostream>
#include<cstring>
using namespace std;
int n,m;
char maze[101][101];
int d[101][101];
int dx[8]= {-1,-1,-1,0,0,1,1,1},dy[8]= {-1,0,1,1,-1,-1,0,1}; //???????????????????????????(dfs?????????)
void add(int x,int y)
{
int i;
for(i=0; i<8; i++) //????????????????????????8?????????
{
int nx=x+dx[i],ny=y+dy[i];
if(nx>=0&&nx<n&&ny>=0&&ny<m&&maze[nx][ny]!='*')
d[nx][ny]=d[nx][ny]+1;
}
}
int main()
{
cin>>n>>m;
memset(d,0,sizeof(d)); //????????????
int i,j;
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
cin>>maze[i][j];
}
} //??????
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
if(maze[i][j]=='*')
add(i,j); //???????????????*???????????????????????????????????????????????????
}
}
int k=0;
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
if(maze[i][j]=='.'&&d[i][j]!=0)//???????????????.??????d??????0???????????????????????????????????????(?????????)
{
k=1;
break;
}
else
if(maze[i][j]=='.')
continue;
else
if(maze[i][j]=='*')
continue;
else
if((int)(maze[i][j])-48!=d[i][j])//????????????????????????????????????????????????????????????????????????
{
k=1; //?????????????????????????????????
break;
}
}
}
if(k==0)//????????????
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
return 0;
}
}
以上是关于[CodeForces984B]Minesweeper的主要内容,如果未能解决你的问题,请参考以下文章