DFS学习归纳总结
来源:互联网 发布:sql怎么安装 编辑:程序博客网 时间:2024/05/22 05:00
看了几次题,dfs还是用的比较多的一种算法,上次做阿里的编程题也是深搜加剪枝。太久没写了,大学学的一点皮毛也都荒废了。
DFS
这篇博客写的很好,伪代码也清晰明了:深度优先搜索(DFS) 算法入门
c++代码
/** * DFS核心伪代码 * 前置条件是visit数组全部设置成false * @param n 当前开始搜索的节点 * @param d 当前到达的深度,也即是路径长度 * @return 是否有解 */ bool DFS(Node n, int d){ if (d == 4){//路径长度为返回true,表示此次搜索有解 return true; } for (Node nextNode in n){//遍历跟节点n相邻的节点nextNode, if (!visit[nextNode]){//未访问过的节点才能继续搜索 //例如搜索到V1了,那么V1要设置成已访问 visit[nextNode] = true; //接下来要从V1开始继续访问了,路径长度当然要加 if (DFS(nextNode, d+1)){//如果搜索出有解 //例如到了V6,找到解了,你必须一层一层递归的告诉上层已经找到解 return true; } //重新设置成未访问,因为它有可能出现在下一次搜索的别的路径中 visit[nextNode] = false; } //到这里,发现本次搜索还没找到解,那就要从当前节点的下一个节点开始搜索。 } return false;//本次搜索无解 }
算法中要注意:
要有出口(搜索到满足条件的时候返回);
利用visit数组标记,访问一个点就将其先标记再访问;
当前递归返回时,如果没有返回true,要将之前标记过得点重置。
关于搜索剪枝算法之后再补充。
0 0
- DFS学习归纳总结
- 机器学习--归纳总结
- 机器学习归纳总结
- Golang 学习总结及归纳
- python学习总结归纳目录
- C++学习归纳与总结
- 课程学习归纳总结(0220)
- 课程学习归纳总结(0221)
- 课程学习归纳总结(0222)
- 课程学习归纳总结(0223)
- 课程学习归纳总结(0224)
- 课程学习归纳总结(0227)
- 课程学习归纳总结(0228)
- 课程学习归纳总结(0301)
- dfs学习总结
- OpenGL学习归纳 -- buffer的使用总结
- css学习归纳总结(二)
- css学习归纳总结(一)
- mongoDB——GridFS存储机制
- opencv激光点追踪代码
- 全面了解Nginx到底能做什么
- MySQL中的bit类型知道多少呢?
- disney (map模拟)
- DFS学习归纳总结
- 使用SQL链接服务器在不同局域网下实现数据库的数据传递
- Oracle到MySQL数据库迁移之--主键生成策略替换
- JS基础---用户注册高亮显示
- JavaWeb从入门到精通(四)-会话管理
- Android 硬编码 备注
- 图的m着色问题
- 【Linux就该这么学】在线培训第一期视频教程价值2400元
- Application传值