acwing 1101. 献给阿尔吉侬的花束 FllodFill

122 阅读1分钟

1101. 献给阿尔吉侬的花束 - AcWing题库

这道题目求老鼠从s位置走到E位置需要走多少步: image.png 根据观察,我们发现老鼠从S位置走到E位置需要走5步。

如果走不过去输出“oop!": image.png

image.png

输入样例:

3
3 4
.S..
###.
..E.
3 4
.S..
.E..
....
3 4
.S..
####
..E.

输出样例:

5
1
oop!

解法

这道题利用bfs,bfs都可以找到一条合法路径:

但是题目要求找到最短路径:

image.png

这里就是bfs和dfs的区别了。

bfs是按层搜搜,dfs是一条路走到头了才回溯,因此bfs肯定比dfs找的路径短。

bfs的原则是: 每次取出队头元素,把和队头有关的元素放到队尾。例如下图:

image.png 取出元素的时候我们按层取出队头元素就可以了,如下:

image.png 因此我们发现queue的先进先出的特性非常适合做bfs的容器

我们可以根据上文的bfs原则根据题目要求画出如下关系图: image.png

bfs模板

image.png

code

先把输入输出和框架写好

image.png

Tips

按照顺时针走:

image.png

代码托管:AcWing 1101. 献给阿尔吉侬的花束 - AcWing