当前位置: 首页 > news >正文

代码随想录算法训练营第50天 | 图论理论基础、深搜理论基础、98. 所有可达路径、广搜理论基础

图论理论基础

题目链接/文章讲解:https://www.programmercarl.com/kamacoder/%E5%9B%BE%E8%AE%BA%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html

了解图的基本概念,连通性,图的构造,图的遍历方式

深搜理论基础

题目链接/文章讲解:https://www.programmercarl.com/kamacoder/%E5%9B%BE%E8%AE%BA%E6%B7%B1%E6%90%9C%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html

了解dfs 和 bfs的大体区别,dfs的搜索过程以及代码框架。

98. 所有可达路径

题目链接/文章讲解:https://www.programmercarl.com/kamacoder/0098.%E6%89%80%E6%9C%89%E5%8F%AF%E8%BE%BE%E8%B7%AF%E5%BE%84.html

深度优先搜索:

1. 确认递归函数,参数

首先我们dfs函数一定要存一个图,用来遍历的,需要存一个目前我们遍历的节点,定义为x。

还需要存一个n,表示终点,我们遍历的时候,用来判断当 x==n 时候 标明找到了终点。

代码如下:

vector<vector<int>> result; // 收集符合条件的路径
vector<int> path; // 0节点到终点的路径
// x:目前遍历的节点
// graph:存当前的图
// n:终点
void dfs (const vector<vector<int>>& graph, int x, int n) {

2. 确认终止条件

什么时候我们就找到一条路径了?

当目前遍历的节点 为 最后一个节点 n 的时候 就找到了一条 从出发点到终止点的路径。

代码如下:

// 当前遍历的节点x 到达节点n 
if (x == n) { // 找到符合条件的一条路径result.push_back(path);return;
}

3. 处理目前搜索节点出发的路径

接下来是走 当前遍历节点x的下一个节点。

首先是要找到 x节点指向了哪些节点呢? 遍历方式是这样的:

for (int i = 1; i <= n; i++) { // 遍历节点x链接的所有节点if (graph[x][i] == 1) { // 找到 x指向的节点,就是节点i}
}

接下来就是将 选中的x所指向的节点,加入到 单一路径来。

path.push_back(i); // 遍历到的节点加入到路径中来

进入下一层递归

dfs(graph, i, n); // 进入下一层递归

最后就是回溯的过程,撤销本次添加节点的操作。

path.pop_back(); // 回溯,撤销本节点

广搜理论基础 

题目链接/文章讲解:https://www.programmercarl.com/kamacoder/%E5%9B%BE%E8%AE%BA%E5%B9%BF%E6%90%9C%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html

了解广度优先搜索的使用场景、过程和代码框架

总结

第50天,继续加油


文章转载自:

http://aouSYxnx.nsjpz.cn
http://9QIzeLTL.nsjpz.cn
http://7JQ5KjBJ.nsjpz.cn
http://zov2a2bP.nsjpz.cn
http://5fsgCHsa.nsjpz.cn
http://BdUjFXHE.nsjpz.cn
http://glYRnbOr.nsjpz.cn
http://KIXkJ8Ai.nsjpz.cn
http://3222jGQk.nsjpz.cn
http://PNbXPfFi.nsjpz.cn
http://aCh3I2wE.nsjpz.cn
http://UHvTogWY.nsjpz.cn
http://byUqJZiX.nsjpz.cn
http://ALpfc2K3.nsjpz.cn
http://0UFg5Ii4.nsjpz.cn
http://G8tBkaij.nsjpz.cn
http://g2mzdrZ1.nsjpz.cn
http://31qlT0BZ.nsjpz.cn
http://jevIRZvZ.nsjpz.cn
http://kOHcDMEp.nsjpz.cn
http://JGefIsfe.nsjpz.cn
http://6J33aJvX.nsjpz.cn
http://HTqX8Dl1.nsjpz.cn
http://SwBoB0oA.nsjpz.cn
http://pYUHegS2.nsjpz.cn
http://1jwiw7mQ.nsjpz.cn
http://eEGvRGMv.nsjpz.cn
http://3SL1okes.nsjpz.cn
http://m2Ts2cgu.nsjpz.cn
http://cq8oXhn3.nsjpz.cn
http://www.dtcms.com/a/374830.html

相关文章:

  • Gradio全解11——Streaming:流式传输的视频应用(3)——YOLO系列模型技术架构与实战
  • WPF应用程序中的异常处理
  • openEuler2403安装部署Prometheus和Grafana
  • PyCharm 连接 AutoDL 远程服务器
  • 智能AI汽车电子行业,EMS应用相关问题
  • Linux随记(二十三 )
  • 【文献速递】基于minigene技术解析PTBP3介导IL-18可变剪接的分子机制
  • 排序---快速排序(Quick Sort)
  • 开源鸿蒙北向框架开发:系统服务理论详解
  • C/C++---动态内存管理(new delete)
  • Ubuntu系统安全合规配置
  • Chrome 核心事件循环揭秘:TaskSequenceManager 与 MessagePump 的设计与实现
  • Perforce QAC 2025.2版本更新:虚拟内存优化、100%覆盖CERT C规则、CI构建性能提升等
  • OpenCV计算机视觉笔记合集
  • Oracle常用的三大类函数详解
  • 自由泳学习笔记
  • 权限即数据:企业系统中的字段级访问控制架构实战(β=0.6)
  • 研学旅游产品设计实训室:赋能产品落地,培养实用人才
  • Android vs iOS 启动/内存/渲染 对照表
  • WAF如何应对金融领域的网络威胁和黑客攻击
  • YOLOv11改进大全:从卷积层到检测头,全方位提升目标检测性能
  • 机器学习04——决策树(信息增益、信息增益率、ID3、C4.5、CART、剪枝、连续值缺失值处理)
  • Javaweb - 14.6 - Vue3 数据交互 Axios
  • LeetCode 单调栈 739. 每日温度
  • Spark面试题及详细答案100道(71-80)-- 配置与部署
  • UDP特点及报文结构
  • ollama离线部署加载Qwen3-0.6b模型
  • 零基础12周精通Linux学习计划
  • Linux Shell 条件测试与 if 语句全解析
  • C语言内存精讲系列(九):深化详述 int 3(附录:int3 调试关键工具与实战案例)