算法C++ DepthFirstSearch BreadthFirstSearch代码模式示范实现(第四章)
文章目录
- 造轮子博客链接
- DFS代码实现(递归模板示范)
- 代码实现(BFS模板示范)
造轮子博客链接
算法第四版C++算法实现全集
DFS可在STL中补充功能 下面的代码模式是结合的邻接表
C++ 邻接表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数组防止重复访问造成不必要的检查vector<bool> visit(v1,false);//v1为节点最大数 初始化为全没有访问过
vector<int> 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;
}
算法C++ DepthFirstSearch BreadthFirstSearch代码模式示范实现(第四章)相关推荐
- 蚁群算法汇总含matlab代码_数学建模(十四)
蚁群算法模拟自然界蚂蚁群体的觅食行为,常用于旅行商问题(TSP),二维.三维路径规划问题. 将蚁群算法用于优化问题的思路:用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体群体的所有路径构成待优化问 ...
- 《C++性能优化指南》 linux版代码及原理解读 第四章
目录 概述 为什么字符串很麻烦 字符串是动态分配的 字符串赋值背后的操作 如何面对字符串会进行大量复制 写时复制COW(copy on write) 尝试优化字符串 避免临时字符串 通过预留存储空间减 ...
- PHP动态设计的设计流程,《PHP设计模式介绍》第十四章 动态记录模式
到目前为止,您所看到的这些设计模式大大提高了代码的可读性与可维护性.然而,在WEB应用设计与开发中一个基本的需求与挑战:数据库应用,这些设计模式都没有涉及到.本章与接下来的两章-表数据网关与表数据映射 ...
- 【设计模式】第四章 工厂模式
第四章 工厂模式 文章目录 第四章 工厂模式 一.介绍 二.简单工厂模式 三.工厂方法模式 四.抽象工厂模式 一.介绍 工厂模式(Factory Pattern),工厂就是创建产品的地方,根据创建的产 ...
- 视觉SLAM开源算法ORB-SLAM3 原理与代码解析
来源:深蓝学院,文稿整理者:何常鑫,审核&修改:刘国庆 本文总结于上交感知与导航研究所科研助理--刘国庆关于[视觉SLAM开源算法ORB-SLAM3 原理与代码解析]的公开课. ORB-SLA ...
- KMP算法求解next数组值(模式串从下标0开始或从下标1开始)以及求值后与主串的匹配过程
写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...
- 算法竞赛训练指南代码仓库_数据仓库综合指南
算法竞赛训练指南代码仓库 重点 (Top highlight) As a data scientist, it's valuable to have some idea of fundamental ...
- RANSAC(随机采样一致算法)原理及openCV代码实现
<RANSAC(随机采样一致算法)原理及openCV代码实现> 原文: http://www.lai18.com/content/1046939.html 本文转自:http://b ...
- Go-AES算法详解与代码
目录 AES 发展史 概述 轮函数F 字节代换 行移位 列混淆 轮密钥加 密钥编排 AES和DES的不同之处 分组模式CTR AES的Go实现 aes包 cipher包 加密/解密 参考 本篇介绍分组 ...
最新文章
- 解决windows7下vs2008不能正常编译ActiveX控件的问题
- OpenAI推新程序包:GPU适应十倍大模型仅需增加20%训练时间
- 作业一(高见老师收)
- github/gitlab同时管理多个ssh key
- android浮于上方布局,android-在FrameLayout中使RecyclerView上方的视图...
- jeewx-api-1.0.1(捷微微信接口API)版本正式发布
- 外星人做系统logo_深圳福田外星人笔记本电脑维修服网点
- odoo10参考系列--测试模块
- 将html内容转换成word文档,一招教你将网页内容转化为word文档保存
- java计数器生成流水号_CODESOFT打印流水号
- 如何通过股票量化交易接口实现盈利稳定?
- File Juicer for Mac(文件内容提取工具)
- 关于人脸识别的最全研究!
- MFC简易RTF编辑器
- Flink SQL 自定义 Connector
- 勒索病毒2019年常见的后缀有ITLOCK/AOL/VC/phobos/ETH/x3m/qwex/H
- 23种java设计模式详解-代理模式
- 【科研小工具】输入任意坐标即可显示相应脑区详细解剖信息
- Linux指令用之记之-sell算数运算
- 搭建or部署接口自动化平台从零到一的过程