搜索
一.BFS&DFS基础
搜索是暴力法的具体体现,具有简单直接的特点,利用了计算机强大的计算能力。(也是用来混部分分的绝佳利器)
搜索的基础算法分为两处:宽度优先搜索(又叫广度优先搜索,即BFS),深度优先搜索(DFS)
思维区别
BFS:“全面扩散,逐层递进”
DFS:“一路到底,逐步回退”
DFS代码框架
void dfs(层数,其他参数) { if(出局判断) { 更新答案 return ; } (剪枝) for(枚举下一层可能的情况) { if(used[i]==0) { used[i]=1; dfs(层数+1,其他参数); used[i]=0; } } return ; }
DFS与BFS对比
1.时间复杂度
差不多,都是O(n+m)
2.空间复杂度