【算法】Python-BFS循环解法

🏓引入

题目引子

在给定网格里,每个单元格有着以下三个值之一:

  • 0代表空块;
  • 1代表正常块;
  • 2代表异常块。

每单位时间,与异常块上下左右四个方向上相邻的正常块都会被影响,变成异常块。

请返回直到单元格中没有正常块为止所必须经过的最短时间,若最后一定会剩下正常块,则返回-1

例1

1
2
in : [[2,1,1],[1,1,0],[1,0,1]]
out: 4

例2

1
2
in : [[2,1,1],[0,1,1],[1,0,1]]
out: -1

其中,网格的长宽最大值为10

概念引入

BFS(Breadth First Search),即广度优先算法。这个是对于图的一种算法,可以用来求最短路径。对于一个图$G=(V,E)$和一个源顶点$s$,从$s$开始,按照$G$的宽度来盲目搜索节点,若发现目标则终止,它并不考虑结果的可能位置,而是彻底地搜索整张图。

定义若是过于抽象,可以通过下面的代码来理解:

1
2



🌟思考过程

-------------FIN-------------

本文标题:【算法】Python-BFS循环解法

文章作者:吃草莓糖葫芦

发布时间:2020年03月04日 - 15:03

最后更新:2020年03月04日 - 17:03

原始链接:https://tsuinterukonsigure.github.io/2020/03/04/%E3%80%90%E7%AE%97%E6%B3%95%E3%80%91Python-BFS%E5%BE%AA%E7%8E%AF%E8%A7%A3%E6%B3%95/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

如果文章对你有用,不妨捐助一下作者小哥哥叭~