题目链接
解题方法:BFS(广度优先搜索)
题目分析
题目大意
给定n行,然后给n个数,代表每一行的字符数量,再给定两个坐标st、ed,表示起点光标所在位置以及终点光标所在位置,求最少按几下键盘(限上下左右),光标从起点到终点
解析
有点像最短路径的感觉,实际上是一个BFS广度优先搜索的问题。BFS的过程是层层扩散的,到达某一个点总是以最短的步数,然后在vis[][]中标记,表示该点已访问(因为再访问这个点的话一定走的步数比之前走到这的步数多,所以无需更新)。又因为这一行行的字符一定是连通的(起码第一个字符总得连通吧),所以,一定是可以搜索到终点的。先把起点push进队列q,然后取队首元素,对该点进行上下左右的判断,依次入队。然后重复此操作,直至找到终点,输出步数,结束。
代码
1 |
|