这道题目求老鼠从s位置走到E位置需要走多少步:
根据观察,我们发现老鼠从S位置走到E位置需要走5步。
如果走不过去输出“oop!":
输入样例:
3
3 4
.S..
###.
..E.
3 4
.S..
.E..
....
3 4
.S..
####
..E.
输出样例:
5
1
oop!
解法
这道题利用bfs,bfs都可以找到一条合法路径:
但是题目要求找到最短路径:
这里就是bfs和dfs的区别了。
bfs是按层搜搜,dfs是一条路走到头了才回溯,因此bfs肯定比dfs找的路径短。
bfs的原则是:
每次取出队头元素,把和队头有关的元素放到队尾。例如下图:
取出元素的时候我们按层取出队头元素就可以了,如下:
因此我们发现
queue的先进先出的特性非常适合做bfs的容器。
我们可以根据上文的bfs原则根据题目要求画出如下关系图:
bfs模板
code
先把输入输出和框架写好
Tips
按照顺时针走: