UVA816 Abbott的复仇 Abbott‘s Revenge

知识点:广搜

这是紫书BFS的例题,一上来就这么难的题,难怪有的大神说紫书要提高一等再去看,这个题就是裸的广搜,没有使用别的算法,但是不简单,

首先,题目最麻烦的就是地图,每个地图进去的方向不同,那么会有不同的能出去的方向,我以前写这个题,记录地图写的很麻烦,看了刘汝佳的方法,真的简便,用一个思维数组来记录地图,前两维是左边,然后是进入的方向,然后是出去的转向,如果可以这个方向进某种转向出,那么就记录为1,否则就是不行,

方向的处理虽然也很麻烦,但是这个我掌握的比较熟练了,北东南西分别映射为0123,左前右映射为012,由当前方向得到下个方向就是当前方向加上转向数组减去1加上4,然后对4取模,那么就是下一步的方向,之所以这样是左转是减一,前进是方向不变,右转是加一,然后减一可能产生负数,所有要加上4,

还没说状态,这个题的状态很显然是坐标加方向,什么方向很重要,题目输入的是什么方向进入能够怎样转向,所以这个题的左边是进入的方向,也就是输入的起点不是我们搜索的起点,输入给的是从这个点出去的方向,所以搜索之前我们要通过这个找到我们搜索的起点,然后进行搜索就行了,搜索的过程中间记录一下最短路径,这个任意的就行,不任意的还没学,他也没讲,输出的时候一开始我犯了个错误,那么就是循环条件的判断,我只比较了横纵坐标,但是方向也是状态之意,方向不同那么状态也就不同,一开始漏掉了&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值