BFS 模板
(后面有单独的bfs小结)
写 一下做BFS 的思路。因为这题比较简单,代码量相对较少,也容易理解一些 更容易总结出模板
1、
先定义有关变量,一般是一个边界值、一个初始值、一个标记数组、加上一个 数组(一个变量) pair<>类型 (两个变量,如 x,y 坐标类型) 或 struct 定义一个新的类(三个以上变量)
2.
按照题意先建立主函数,如果是迷宫类问题,读入的可以直接用一层for循环加 %s 字符串,如果用两层for循环加 %c 字符的话要记得加getchar()
3.
最好bfs不要定义成int型,容易出现BUG(都是泪)。结果传递的时候注意 边界判断的 if 的位置,一般在while( q.size() )循环里 for()循环外。也不排除在for里面。
4.
到了最关键的bfs函数部分(……),bfs是宽度/广度搜索的简称,所以和dfs比起来,它有限搜索所有子节点,再搜索孙节点,以此类推。
在运用的时候一般是 队列/优先队列 + 一个模拟用的for + 一个判断用的judge(可以写在里面)来构成(如果用优先队列的话要记得重构)。
5.
运用时:先用for模拟所有的可能,然后判断是否加入队列,如果不符合,就自动进入下一个队列元素的循环&