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

网站图片上传却不显示不出来有什么网站做生鲜配送的

网站图片上传却不显示不出来,有什么网站做生鲜配送的,网站怎么做qq登录界面,WordPress微信SVG图标📌 什么是深度优先搜索? 深度优先搜索(Depth-First Search,DFS)是算法竞赛和面试中最高频的暴力搜索算法之一。其核心思想是“一条路走到黑”,从起点出发,优先探索最深的节点,直到无…

📌 什么是深度优先搜索?

深度优先搜索(Depth-First Search,DFS)是算法竞赛和面试中最高频的暴力搜索算法之一。其核心思想是“一条路走到黑”,从起点出发,优先探索最深的节点,直到无路可走再回溯,属于回溯算法的基石。


🌳 DFS算法思想

1. 核心流程(二叉树举例)

         A/   \B     C/ \   /D  E  FDFS遍历顺序:A → B → D → E → C → F
  • 递归本质:系统调用栈实现“先进后出”
  • 回溯条件:遇到叶子节点或访问完所有子节点后回退

2. DFS与BFS对比

特性DFSBFS
数据结构栈(递归/显式栈)队列
空间复杂度O(h)(h为树高度)O(w)(w为树宽度)
适用场景路径问题、连通块最短路径、层级遍历

🛠️ DFS实现方式

1. 递归模板(最常用)

def dfs(node, visited):if node in visited:  # 终止条件returnvisited.add(node)    # 标记已访问# 处理当前节点逻辑for neighbor in node.neighbors:  # 遍历子节点dfs(neighbor, visited)

2. 显式栈模板(避免递归溢出)

def dfs_stack(start):stack = [start]visited = set()while stack:node = stack.pop()if node not in visited:visited.add(node)# 处理当前节点for neighbor in reversed(node.neighbors):  # 保证顺序stack.append(neighbor)

🔥 DFS六大经典应用场景

1. 路径查找问题

  • 例题:113. 路径总和 II
  • 代码片段
def pathSum(root, target):res = []def dfs(node, path, sum_val):if not node: returnsum_val += node.valpath.append(node.val)if not node.left and not node.right and sum_val == target:res.append(path.copy())dfs(node.left, path, sum_val)dfs(node.right, path, sum_val)path.pop()  # 关键回溯dfs(root, [], 0)return res

2. 连通块计数

  • 例题:200. 岛屿数量
  • 技巧:沉岛法(访问过的陆地标记为’0’)

3. 排列组合问题

  • 例题:46. 全排列
  • 关键:维护used数组记录已选元素

4. 拓扑排序

  • 例题:207. 课程表
  • 重点:检测图中是否存在环

5. 棋盘类问题

  • 例题:51. N 皇后
  • 优化:对角线剪枝(row-colrow+col标识)

6. 记忆化DFS

  • 例题:329. 矩阵中的最长递增路径
  • 核心:用memo数组避免重复计算

⚠️ DFS高频易错点

  1. 忘记回溯

    path.append(node.val)  # 前进
    dfs(...)
    path.pop()            # 必须回溯!
    
  2. 未剪枝导致超时
    通过排序+条件判断跳过无效分支(例:40. 组合总和 II)

  3. 递归终止条件错误
    需明确递归到叶子节点或越界时的处理方式

  4. 修改全局变量未恢复
    在修改全局状态(如矩阵元素)后,必须在回溯时还原


🚀 DFS优化技巧

1. 剪枝策略

  • 可行性剪枝:提前排除不可能的解
    (例:17. 电话号码的字母组合中跳过空输入)

  • 最优性剪枝:当前路径已劣于已知最优解时终止
    (例:剑指 Offer 34. 二叉树中和为某一值的路径)

2. 方向向量简化代码

# 四方向遍历
directions = [(-1,0), (1,0), (0,-1), (0,1)]
for dx, dy in directions:x_new, y_new = x + dx, y + dy

3. 双向DFS

  • 适用场景:目标明确的搜索问题(如127. 单词接龙)
  • 优势:将时间复杂度从O(bd)降为O(b(d/2)),b为分支因子,d为深度

💡 学习建议

  1. 先理解再背模板:通过二叉树遍历掌握递归流程
  2. 从二维矩阵入手:岛屿类问题适合培养空间思维
  3. Debug技巧
    • 打印递归树层级
    • 使用可视化工具(如Python Tutor)
  4. 延伸学习
    • 回溯算法(DFS+剪枝)
    • 迭代加深搜索(IDDFS)
    • A*算法(启发式搜索)

📚 精选LeetCode练习题

题目难度核心考点
79. 单词搜索中等二维矩阵回溯
494. 目标和中等组合问题变形
473. 火柴拼正方形中等剪枝优化
980. 不同路径 III困难状态压缩

掌握DFS的关键在于大量练习总结回溯模式。建议每天刷2-3题,坚持两周即可显著提升对DFS的掌控力!


文章转载自:

http://orPVRTRa.fzqfb.cn
http://ybBipul1.fzqfb.cn
http://fwBbwb94.fzqfb.cn
http://JVvYXuk3.fzqfb.cn
http://YUkHUdSX.fzqfb.cn
http://FyURqVDu.fzqfb.cn
http://QURVryJp.fzqfb.cn
http://NgMLdhWC.fzqfb.cn
http://N0TCozER.fzqfb.cn
http://kKLngs8t.fzqfb.cn
http://LMClrdgX.fzqfb.cn
http://htm8sjNf.fzqfb.cn
http://IEGMuqeG.fzqfb.cn
http://jkVJUial.fzqfb.cn
http://hzpO7ct0.fzqfb.cn
http://JL0K0OXk.fzqfb.cn
http://L5EUfL6H.fzqfb.cn
http://MC7OObYS.fzqfb.cn
http://yvtbh9L8.fzqfb.cn
http://RzA4ZdTt.fzqfb.cn
http://kB9cvw0M.fzqfb.cn
http://rbKaf9dV.fzqfb.cn
http://08wSk5Xf.fzqfb.cn
http://x9uJTczk.fzqfb.cn
http://lOqJQqSw.fzqfb.cn
http://YZ8I9ObX.fzqfb.cn
http://s5yPHcOG.fzqfb.cn
http://wVWbG6HW.fzqfb.cn
http://Bg9BOlh6.fzqfb.cn
http://hNJjQMyv.fzqfb.cn
http://www.dtcms.com/wzjs/686419.html

相关文章:

  • dnf可以去哪个网站做代练淮北论坛房产
  • 怎么给企业制作网站内网网站建设汇报
  • 网站开发一个模板费用重庆速代网络科技
  • 湛江网站建设方案维护网站建设子目录
  • 室内设计网站模板深圳做网站排名价格
  • 做app还是网站深圳网络有限公司有哪些
  • 四川省中国建设银行招聘信息网站wordpress导入大于2m
  • 网站建设夜猫孝感个人网站建设
  • 网站开发商标属于哪一类wordpress分销商城
  • 公司网站内容相近wordpress根据用户名生成头像
  • 东莞做微网站建设价格wordpress里的关键词在哪设置
  • 网站后台登陆密码wordpress好看的背景图片
  • 学生成绩管理系统网站建设深圳3区最新通告
  • 绿色电器公司网站psd模板一条视频可以多平台发布吗
  • 有了空间怎么做网站查询网站外链
  • 门户网站制作服务wordpress企业主题 下载
  • 做网站推广的一般都是什么公司wordpress 企业站教程
  • 连连建设跨境电商网站建站网站哪个好
  • 怎么注册网站平台网站建设备案是什么意思
  • 江苏苏州网站建设对网站建设功能的情况说明
  • 建设银行天津分行网站公司网站开发教程
  • 国外做兼职的网站温州网站建设的公司
  • 网站建设的售后怎么用自己电脑做服务器发布网站
  • 搜索引擎的网站有哪些电子网站模板
  • 甘肃路桥建设集团公司网站阿里巴巴网站怎么做推广方案
  • 网站前端设计图深圳网站开发哪个好
  • 兼职做网站挣钱么搜狐一开始把网站当做什么来做
  • 衡阳建设网站制作机构改革 住房与城乡建设厅网站
  • 手机上传视频网站开发两阳夹一阴后续走势
  • 泰州网站建设价格wordpress充值金币