开始拿到这道题,想到先前写过的BFS,由出口到终点,最短路径。后来一看题目不是这个意思,题目要求拐弯数最少到达终点而不是求最短路径。
看了解题报告,有了一点点思路,就是先选定一条方向,然后把该方向上所有能拐的弯都拐了。也就是说,运动的方向不仅仅是周围的四个点,因为没求最短时间,为了避免BFS提前结束,就把四个方向搜索到底。
注意,这里记录拐弯数的K的初始值不是0而是-1,因为第一个选定的方向不算在内。
PS:这道题目好坑啊,题目给的x是列,y是行,为了方便自己理解,我在输入的时候特地先输入y后输入x,然后就可以当做正常理解的x,y。
然而这题卡我最多的是我没有memset,vis的数组没有初始化。。。。所以养成良好的编程习惯很重要,一定要初始化数组。
AC:
#include<iostream>
#include<cstdio>
#include<string.h>