深搜DFS

含义

  • 从搜索起点开始,一直访问邻居节点
  • DFS一般都是递归,先一层层递归进去,然后一层层出来......反复搜到最后一层
  • BFS一般是用栈,搜完一层,进入下一层,一直搜到最后一层

常见所需元素

  • 递归
  • 状态
  • 状态转移
  • 搜索成功的判断
  • 遍历邻居节点

模板(自创)

void DFS(T xxx,状态1){
	if(f(xxx)...){		//递归出口
		cout<<结果
		return;
	}
	DFS(T xxx,状态2=状态1+x);
	cout<<没搜到 或者 直接结束
	return;
}

优化

  • 优化主要是剪枝,考虑题目实际意思、边界情况等,有些搜过的,不可能符合要求的情况就不搜了

例题

posted @ 2021-03-15 12:18  LazyXx  阅读(30)  评论(0编辑  收藏  举报