每日闲聊
可怜可怜孩子吧,孩子码风实在太丑了.
最近大佬代码的压行看得我头疼.
题目大意
在一个 8 × 8 8\times 8 8×8的棋盘上有若干个障碍物,每个障碍物每秒会往下落一格,掉出棋盘后就没然后了.Maria从棋盘左下角出发,要到达右上角和Anna会合.她每次只能向上,下,左,右,右上,右下,左上,左下八个方向走出一步,或者不动,不能走入障碍物所在的格子,也不能走入障碍物掉入的格子,不能走出棋盘.问她是否能和Anna会合.
给定数据
给出 8 × 8 8\times 8 8×8的棋盘,其中.
表示空格,S
表示障碍物,M
表示Maria所在的格子,A
表示Anna所在的格子,保证M
一定在左下角,A
一定在右上角.
输出要求
如果Maria能到达Anna处就输出WIN
,否则输出LOSE
.
解题思路
显然这题是一道拓展了一点点的搜索题.我们可以采用DFS来解题.(也就我这种蒟蒻还在这废话)
这里我们需要分类讨论一下这个题DFS的前进步骤.
- 向八个方向拓展.
DFS拓展时传一个记录步数的step
,每一步将每个障碍物的当前位置和下一步位置与前进的位置对比,具体的话直接上代码
bool f=0;
for(int i=0;i<8;++i){
int tx=x+dx[i],ty=y+dy[i];
if(tx<1 || tx>8 || ty<1 || ty>8 || book[tx][ty]) continue;
bool flag=0;
for(auto to:stoe){
int dnx=to.F+step,dny=to.S;
if(((dnx==tx || dnx+1==tx) && dny==ty))