恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

回溯算法以及第一道题(昨天的忘保存了)

  • 首页
  • 资讯中心
  • /
  • 回溯算法以及第一道题(昨天的忘保存了)

相关资讯

AI Agent 面试题 607:RAG系统中的检索排序(Reranking)策略有哪些? 2026/8/2 18:43:25
`requests` 是 Python 中最流行、最易用的 HTTP 网络请求库,用于发送 HTTP/1.1 请求(GET、POST、PUT、DELETE 等) 2026/8/2 18:43:25
AI Agent 面试题 608:如何使用Cross-Encoder进行检索结果重排序? 2026/8/2 18:43:26

最新资讯

MTR模组JS插件开发:从动态显示屏到铁路系统进阶实战
Java面试实录:幽默程序员如何应对大厂技术拷问
GPT+Skill:系统化挖掘科研与项目创新点的AI辅助方法论
技术面试全攻略:从准备到实战的核心方法论
逆向选择与随机目标:委托代理问题的动态建模与风险控制
基于OpenClaw与AI大模型构建智能面试训练系统

今日推荐

markdown-it-vue 踩坑排障:从安装到渲染的 6 个高频问题快速讲清
多尺度智能体控制:从宏观密度场到微观决策的架构与实践
CUBE标准:统一AI智能体评测的度量衡与架构解析

本周热门

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码
【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码
隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

回溯算法以及第一道题(昨天的忘保存了)

发布时间:2026/8/22 21:36:34
回溯算法以及第一道题(昨天的忘保存了) 回溯三部曲void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择本层集合中元素树中节点孩子的数量就是集合的大小) { 处理节点; backtracking(路径选择列表); // 递归 回溯撤销处理结果 } }一层for循环就是1次递归“50层for循环”应理解为“沿路径向下50次递归调用”。直接的解法当然是使用for循环例如示例中k为2很容易想到 用两个for循环这样就可以输出 和示例中一样的结果。代码如下int n 4; for (int i 1; i n; i) { for (int j i 1; j n; j) { cout i j endl; } }输入n 100, k 3 那么就三层for循环代码如下int n 100; for (int i 1; i n; i) { for (int j i 1; j n; j) { for (int u j 1; u n; n) { cout i j u endl; } } }如果n为100k为50呢那就50层for循环。回溯法三部曲递归函数的返回值以及参数代码如下所以需要startIndex来记录下一层递归搜索的起始位置。 vectorvectorint result; // 存放符合条件结果的集合 vectorint path; // 用来存放符合条件单一结果 void backtracking(int n, int k, int startIndex)回溯函数终止条件什么时候到达所谓的叶子节点了呢path这个数组的大小如果达到k说明我们找到了一个子集大小为k的组合了在图中path存的就是根节点到叶子节点的路径。if (path.size() k) { result.push_back(path); return; }单层搜索的过程回溯法的搜索过程就是一个树型结构的遍历过程在如下图中可以看出for循环用来横向遍历递归的过程是纵向遍历。如此我们才遍历完图中的这棵树。for循环每次从startIndex开始遍历然后用path保存取到的节点i。代码如下for (int i startIndex; i n; i) { // 控制树的横向遍历 path.push_back(i); // 处理节点 backtracking(n, k, i 1); // 递归控制树的纵向遍历注意下一层搜索要从i1开始 path.pop_back(); // 回溯撤销处理的节点 }class Solution { private: vectorvectorint result; vectorint path; void backtracking(int n, int k, int startIndex) { if (path.size() k) { result.push_back(path); return; } for (int i startIndex; i n - (k - path.size()) 1; i) { // 优化的地方 path.push_back(i); // 处理节点 backtracking(n, k, i 1); path.pop_back(); // 回溯撤销处理的节点 } } public: vectorvectorint combine(int n, int k) { backtracking(n, k, 1); return result; } };

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号