CodeForces128A - Statues 解题报告

每日闲聊

可怜可怜孩子吧,孩子码风实在太丑了.
最近大佬代码的压行看得我头疼.


原题链接

题目大意

在一个 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的前进步骤.

  1. 向八个方向拓展.
    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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值