知识点:广搜
这是紫书BFS的例题,一上来就这么难的题,难怪有的大神说紫书要提高一等再去看,这个题就是裸的广搜,没有使用别的算法,但是不简单,
首先,题目最麻烦的就是地图,每个地图进去的方向不同,那么会有不同的能出去的方向,我以前写这个题,记录地图写的很麻烦,看了刘汝佳的方法,真的简便,用一个思维数组来记录地图,前两维是左边,然后是进入的方向,然后是出去的转向,如果可以这个方向进某种转向出,那么就记录为1,否则就是不行,
方向的处理虽然也很麻烦,但是这个我掌握的比较熟练了,北东南西分别映射为0123,左前右映射为012,由当前方向得到下个方向就是当前方向加上转向数组减去1加上4,然后对4取模,那么就是下一步的方向,之所以这样是左转是减一,前进是方向不变,右转是加一,然后减一可能产生负数,所有要加上4,
还没说状态,这个题的状态很显然是坐标加方向,什么方向很重要,题目输入的是什么方向进入能够怎样转向,所以这个题的左边是进入的方向,也就是输入的起点不是我们搜索的起点,输入给的是从这个点出去的方向,所以搜索之前我们要通过这个找到我们搜索的起点,然后进行搜索就行了,搜索的过程中间记录一下最短路径,这个任意的就行,不任意的还没学,他也没讲,输出的时候一开始我犯了个错误,那么就是循环条件的判断,我只比较了横纵坐标,但是方向也是状态之意,方向不同那么状态也就不同,一开始漏掉了&#