核心算法思想
1. 定义状态 - 问题求解树
2. 问题求解树是思维逻辑结构,非实体程序数据结构
DFS - 深度搜索算法
通常用递归的方式扩展状态
BFS - 广度搜索算法,适合求解最优化问题(比如最短路径)
定义
通常需要先定义一个状态数据结构,放入BFS广搜状态队列
BFS广搜遍历队列步骤(边吃边拉模式)
1. 取出状态
2. 扩展状态
3. 弹出状态
DFS 和BFS 算法思维逻辑上的主要区别
遍历状态树的方式不同。DFS深度搜索的遍历方式类似对状态树的前序遍历,通常使用递归实现。BFS广度搜索的遍历方式是分层遍历,通常借助队列的入队和弹出操作实现。
Tips
方向数组,通常在计算相邻坐标偏移量的时候用到的数组,数值相对固定。
4向(十字)
dir[4][2] = {0, 1, 1, 0, 0, -1, -1, 0};
8向(米字)
dir[8][2] = {0, 1, 1, 0, 0,-1,-1, 0
1,-1,-1, 1, 1, 1,-1,-1};
