算法C++ DepthFirstSearch BreadthFirstSearch代码模式示范实现(第四章)
发布日期:2021-06-30 22:29:34
浏览次数:2
分类:技术文章
本文共 1113 字,大约阅读时间需要 3 分钟。
文章目录
造轮子博客链接
DFS可在STL中补充功能 下面的代码模式是结合的邻接表
DFS代码实现(递归模板示范)
//不妨可以在邻接表中增加一行 //这个算法再补充一点是回溯法的核心思想//可作为检测两个节点是否相连的算法访问bool visit[v1] = false; //v1为节点最大数 初始化为全没有访问过bool Backtracking(int v1,int v2){ if(visit[v1]) return false; if(v1 == v2) return true;//找到后返回 bool ret = false; visit[v1] = true; for(const auto& num:G[v1]) { if(!visit[num]) ret = Backtracking(num); if(ret) return true; } //当所有节点遍历完都没有返回时 我们即返回false 没有找到我们需要找到的点 return false;};
代码实现(BFS模板示范)
//在我的理解中 这个BFS其实和二叉树层序遍历是一个原理的//有STL库相对于我之前学习C的还需要用next pre记号来标记的时候 就方便的多了//利用vector数组来表示下一层我们需要检查的//visit bool数组防止重复访问造成不必要的检查vectorvisit(v1,false);//v1为节点最大数 初始化为全没有访问过vector nowlevel,nextlevel;bool BreadthFirstSearch(int v1,int v2){ if(v1 == v2) return true; nowlevel.push_back(v1); visit[v1] = true; while(!nowlevel.empty()) { for(const auto& num:nowlevel) { for(const auto& temp:G[num]) { if(temp == v2) return true; if(visit[temp]) continue; nextlevel.push_back(temp); visit[temp] = true; } } nowlevel = nextlevel; nextlevel.clear(); } return false;}
转载地址:https://love6.blog.csdn.net/article/details/115798651 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月29日 07时31分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
python 函数式编程
2019-04-30
python编码
2019-04-30
redis cli
2019-04-30
java http请求
2019-04-30
tensorflow 数据格式
2019-04-30
tf dense layer两种创建方式的对比和numpy实现
2019-04-30
tf initializer
2019-04-30
tf keras SimpleRNN源码解析
2019-04-30
tf keras Dense源码解析
2019-04-30
tf rnn输入输出的维度和权重的维度
2019-04-30
检验是否服从同一分布
2019-04-30
keras、tf、numpy实现logloss对比
2019-04-30
MyBatisPlus简单入门(SpringBoot)
2019-04-30
攻防世界web进阶PHP2详解
2019-04-30
攻防世界web进阶区web2详解
2019-04-30
xss-labs详解(上)1-10
2019-04-30
xss-labs详解(下)11-20
2019-04-30
攻防世界web进阶区ics-05详解
2019-04-30
攻防世界web进阶区FlatScience详解
2019-04-30
攻防世界web进阶区ics-04详解
2019-04-30