dfs(深度优先搜索)定义:一种用于遍历树的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。整个进程反复进行直到所有节点都被访问为止。
属于盲目搜索,
时间复杂度为O(n)。
bfs(广度优先搜索)定义:用一个队列,用来存储已经被访问、但相连的节点还没有被访问的节点。
属于盲目搜索,
时间复杂度为O(n)。
深搜模板:
int search(int t) { if(满足输出条件) { 输出解; } else { for(int i=1;i<=尝试方法数;i++) if(满足进一步搜索条件) { 为进一步搜索所需要的状态打上标记; search(t+1); 恢复到打标记前的状态;//也就是说的{回溯一步} } }
例题:
给定一个 N \times MN×M 方格的迷宫,迷宫里有 TT 处障碍,障碍处不可通过。
在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。
给定起点坐标和终点坐标,每个方格最多经过一次,问有多少种从起点坐标到终点坐标的方案。
输入格式
第一行为三个正整数 N,M,TN,M,T,分别表示迷宫的长宽和障碍总数。
第二行为四个正整数 SX,SY,FX,FYSX

本文介绍了深度优先搜索(DFS)和广度优先搜索(BFS)的基本概念、时间复杂度,并提供了两种算法的模板及应用示例。DFS适用于遍历树结构,BFS则利用队列进行搜索。同时,文中给出了DFS解决迷宫问题和BFS解决棋盘问题的具体例子。

3352

被折叠的 条评论
为什么被折叠?



