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

DFS深度优先搜索

1.跳台阶一共有n级,每次走一级或者两级,问一共有多少种方案

分析,如果台阶为1,只有一种走法,如果台阶为2,可以走一次二或者两次1,有两种结果。

2.递归实现指数型枚举。从1-n中随机选取任意多个整数,输出所有的可能方案。

所有方案数为2的n次方。从1-n依次考虑每个数选/不选。

递归/DFS最重要的是顺序,做到补充不漏。

分析:从第一个元素也就是1开始,依次向后确认每一位的值存在或者不存在,所以才在主程序中使用dfs(1)。在dfs函数中,进行每一位元素的判断并输出,试用嵌套方式。

3.递归实现排列型枚举。按照字典序输出1-n所有不重复的序列,要求每一行不允许出现重复的数字。

strcmp 字典序:看ASCII码值大小。

思路:依次枚举每个位置可以放哪些数字,有几种可能。这道题和前一道题的不同之处在于出现过的数字不允许再次出现,所有这里额外设置一个数字用来标记出现过的数字。

实现回溯部分需要再度理解。数组st标识该数是否出现过,返回类型为bool,出现过后存入输出数组arr中,下一步进行递归调用,对后一个位置的数据进行相同的步骤,在左侧全部遍历完成后回溯到上一层,修改数据改为没有进入过,核心与深度优先搜索完全符合,先把一个位置的数据可能全部搜索完毕后回溯到上一层,再次进行遍历。

4.递归实现组合型枚举。排列组合。输入两个自然数,从n个数中任取r个数字,输出所有的组合,所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,每个元素占三个字符的位置,所有的组合也按字典顺序。

思路:排列需要考虑顺序,组合不需要考虑顺序。思路还是和上一题一样,依次枚举每个位置放哪个数。

要求数据按顺序输出,所以如果第一位是最大的数字的话,需要直接进行剪枝操作。其余两个位置类似。

5.P1036洛谷

思路:理解剪枝。((x-1)+(n-start+1))<k return ;

http://www.cnnetsun.cn/news/1780085.html

相关文章:

  • MySQL8.0大小写敏感坑爹实录:lower_case_table_names从报错到解决的完整过程
  • DDoS攻击简介,简单复现DOS攻击(通过虚拟机单个源攻击,并且分析攻击源)
  • PyCharm高效开发秘籍:集成Phi-4-mini-reasoning插件实现智能编程
  • 为什么头部云厂商已在Q1完成AOT灰度?揭秘Python原生编译在K8s Serverless中节省38%冷启成本的真实案例
  • 【限时开源】20年沉淀的Python MCP服务模板黄金配置矩阵(含17项性能基线数据+压测对比报告)
  • rk3588 适配音频解码芯片 ALC5616
  • Android点击事件分发流程
  • 网盘下载新思路:如何在不破解限速的情况下获得更流畅的下载体验
  • Hex Editor Neo十六进制编辑与磁盘数据查看工具:解决二进制文件与磁盘底层编辑难题
  • 中兴光猫工厂模式终极指南:zteOnu工具完整教程
  • Steam成就管理解决方案:高效解锁与管理游戏成就的5个核心方法
  • 3个疑问:MifareOneTool能否解决你的智能卡操作难题?
  • 抖音无水印批量下载实战指南:3步解决内容备份难题
  • 万象视界灵坛参数详解:候选标签最大长度(77 tokens)与截断策略说明
  • 告别繁琐研究!DeerFlow快速入门:开箱即用的个人深度研究助理
  • 为什么大多数AI Agent项目会失败:10个常见陷阱
  • 01-服务注册发现详解
  • 3大核心功能:《工业队长》DoubleQoLMod-zh模组的智能效率优化指南
  • MifareOneTool智能卡操作完全指南:从问题解决到技术原理
  • 如何用drawio-desktop构建跨平台的专业图表工作流
  • Qwen2.5-7B新手部署:如何用最简单的方法运行阿里大模型
  • Python 上位机 + Claude Code 实现试剂研发全自动迭代闭环系统
  • GLM-OCR与计算机组成原理的关联:从指令集到AI推理的算力支撑
  • CAJ格式转换高效解决方案:从学术文献处理痛点到全流程指南
  • DamaiHelper抢票神器:从原理到实战的智能抢票全攻略
  • 浏览器渲染层文档提取技术:kill-doc的技术架构与实现原理深度解析
  • Career-Ops:求职专用智能体
  • 【DLT实战】从零推导PnP:手撕线性方程组与SVD分解求解相机位姿
  • 轴承座夹具设计CAD图纸
  • 解决显示器色彩过饱和:novideo_srgb实现NVIDIA显卡精准色彩校准