PKU 2157 ( Maze ) (DFS)

这应该是我做过的较为复杂的搜索题了!

首先,对输入的数据进行处理,记录下每个门的位置,以及每个门各需要多少钥匙才能打开!

于是钥匙数据有两个变量:对应的门的钥匙数量,目前拿到的钥匙的数量(当这两个变量相等的时候,才可将对应的门打开!)

门的数组有有三个变量,x,y,open。x和y是记录该门的位置,而open则是判断是否在搜索的过程中到达这个门。

只有当open==true,还有钥匙的数量等于目前那道该种钥匙的数量时,该门才能作为新的起点进行新一轮的遍历!

切记,门是走不过去的,也就是遇到门的时候要将其标记为普通点,否则下次将该点作为起点进行遍历的时候会重复走。接着就returne 0.这个问题导致了2次TLE。

而钥匙的点作为普通的点就行了。

为了方便处理,将起点作为第五个门,呵呵,的确是方便了很多!

当门数组从头到位走一次,都没发现可以作为新起点的门的时候,说明此迷宫是拿不到宝藏的,输出NO。

That 's all!

其实代码并不长,只是判断语句太多了!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值