
算法-DFS(C++实现)
文章平均质量分 89
DFS是一种用于遍历或搜索树/图的算法,核心思想是一条路走到底,直到无法继续再回溯
基本思想
从起点出发,选择一个方向深入
遇到尽头就回退,换另一条路继续
用栈(递归)实现,适合找路径、连通性问题
典型应用
迷宫求解
图的连通性检测
排列组合问题(如全排列)
维维宝宝最可爱啦QWQ
WIT学生一枚
展开
-
LeetCode 130. 被围绕的区域 DFS-详细题解
DFS/BFS遍历所有与起点颜色相同的像素,修改为新颜色(需注意边界条件和颜色相同判断)。// 未被标记的'O'需要转换为'X'dfs(board, row - 1, col);// 步骤2:转换内部'O'为'X',并恢复'T'为'O'// DFS函数:标记所有与边界相连的'O'为临时字符'T'// 边界检查:越界或当前字符不是'O'时直接返回。// 恢复标记的'O'原创 2025-04-11 20:41:56 · 571 阅读 · 0 评论 -
LeetCode 200. 岛屿数量 - DFS
DFS 是解决岛屿类问题的经典方法,通过递归或栈实现相邻陆地的遍历。标记已访问的陆地:防止重复计数。遍历方向:覆盖上下左右四个方向。边界检查:确保索引不越界。通过这种思路,可以高效解决类似问题欢迎指出不足之处!!!原创 2025-04-01 23:47:25 · 520 阅读 · 0 评论 -
LeetCode 1254. 统计封闭岛屿的数目 - DFS
/ 矩阵太小,无法形成封闭岛屿。if (grid[i][j] == 0) { // 发现未访问的陆地。// 若未触及边界,计数器加一。:若矩阵行或列小于3,无法存在封闭岛屿(例如3x3矩阵的中间点需要四周被1包围)。// 边界检查:若当前坐标在矩阵边界且为陆地,标记为非封闭。时,启动一次独立的DFS,若该区域未触及边界,则计入结果。),若某块陆地无法触及矩阵边界,则为封闭岛屿。原创 2025-04-02 00:37:50 · 461 阅读 · 0 评论 -
LeetCode 2658. 渔夫的最大收益 - DFS
DFS 在连通区域问题中表现出色,通过递归或栈实现相邻节点的遍历。累加与标记:在 DFS 中累加鱼数并标记已访问。方向处理:覆盖上下左右四个方向。全局最大值:遍历所有可能的连通区域,记录最大值。原创 2025-04-02 00:30:51 · 892 阅读 · 0 评论