news 2026/6/10 2:29:32

算法杂谈:回溯路线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法杂谈:回溯路线

目录

前言

在动态规划中:

在bfs中:


前言

对于普通的路线问题,我们可以存储全局变量path存储路线过程中的,一个个“点”。由于这些点就是按照顺序存储的,路线就是可以直接得到的。

但是如果是动态规划,或者是带有图需要从一个点开始找到另一个点,我们在找到结果后还需要回溯这个结果的实现路线,这里没办法轻松得到路线,那么我们就需要尽可能利用条件,从该结果往回退找到上一个节点是什么,这里介绍两种目前已经遇到的情景。

在动态规划中:

以牛客网 最长公共子序列II 为例

最长公共子序列(二)_牛客题霸_牛客网

找到最长子序列,我们还需要返回这个子序列是什么,既然我们已经完成填表,那么我们就可以,以dp值为引,按照dp值递减的顺序,修改i和j的坐标,当s1[i]==s2[j]时此时这个就是我们要寻找的节点,头插进结果,让i--,j--(意味着继续道s1[0,i-1],s2[0,j-2]区间内寻找);如果不等,往可以使dp值减少的方向前进,于是我们就找到了路线。

代码实现如下:

class Solution { public: string LCS(string s1, string s2) { int n=s1.length(),m=s2.size(); s1=' '+s1,s2=' '+s2; vector<vector<int>> dp(n+1,vector<int>(m+1)); for(int i=1;i<=n;++i) { for(int j=1;j<=m;++j) { if(s1[i]==s2[j])dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } } //回溯构造LCS string ret; int i=n,j=m; while(i&&j) { if(s1[i]==s2[j]) { ret=s1[i]+ret; --i; --j; } else if(dp[i-1][j]>dp[i][j-1])--i; else --j; } return ret==""?"-1":ret; } };

在bfs中:

以bjfuoj的 码码,我迷路了 为例

BJFUOJ | 码码,我迷路了

该题是一道很简单的bfs经典题,但找到目标点后,我们还需要输出从起点到目标点依次经过的路径,此时依旧利用回溯,构造路线。

回溯路线:因为我们需要从一个节点得到上一个节点的信息,这里节点的信息就是对应的坐标,那么我们可以创建一个“point”类型的二维数组fa,用fa[i][j]存储到达点{i,j}的上一个节点的坐标,具体代码体现就是在bfs中队列push新节点的时候,我们得到的节点假设是{newx,newy},因为newx和newy是由{x,y}得到的,我们使fa[newx][newy]={x,y}这样就得到了上一个节点的位置,就可以实现回溯了。

此篇完。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:00:45

Langchain-Chatchat支持哪些文件格式?一文讲清输入源配置

Langchain-Chatchat 支持哪些文件格式&#xff1f;一文讲清输入源配置 在企业知识管理日益复杂的今天&#xff0c;如何让堆积如山的PDF、Word文档和内部手册“开口说话”&#xff0c;成了智能化落地的关键一步。很多团队尝试引入大模型来构建智能问答系统&#xff0c;却发现通用…

作者头像 李华
网站建设 2026/6/9 19:41:38

10 个AI论文工具,助你轻松搞定研究生论文!

10 个AI论文工具&#xff0c;助你轻松搞定研究生论文&#xff01; AI 工具助力学术写作&#xff0c;轻松应对论文挑战 在研究生阶段&#xff0c;论文写作不仅是学术能力的体现&#xff0c;也是对时间与精力的巨大考验。随着人工智能技术的发展&#xff0c;越来越多的 AI 工具被…

作者头像 李华
网站建设 2026/6/9 19:48:09

多线程2——并发和并行

一、多线程1. 并发&#x1f9c1; 并发&#xff08;Concurrency&#xff09;&#xff1a;单核CPU的"多任务切换大师"定义&#xff1a;多个任务在同一时间段内交替执行&#xff0c;看起来像是同时进行&#xff0c;但实际上在任意时刻只有一个任务在执行。生活比喻&…

作者头像 李华
网站建设 2026/6/9 20:59:00

Langchain-Chatchat支持相似问题推荐:提升用户查找效率

Langchain-Chatchat 支持相似问题推荐&#xff1a;提升用户查找效率 在企业知识管理日益复杂的今天&#xff0c;一个常见的场景是&#xff1a;HR部门每天收到数十条“年假怎么申请&#xff1f;”的提问&#xff0c;尽管答案早已写入员工手册。传统知识库系统面对这种高频、多变…

作者头像 李华
网站建设 2026/6/9 18:51:54

AI时代软件测试的必由之路:人机协作深度实践

测试领域的范式转移 在软件测试行业&#xff0c;人工智能&#xff08;AI&#xff09;和自动化工具的崛起正重塑工作流程。据2025年行业报告显示&#xff0c;超过70%的企业已部署AI辅助测试工具&#xff0c;但人类测试人员的角色并未被替代&#xff0c;而是演变为“协作主导者”…

作者头像 李华
网站建设 2026/6/10 0:17:46

Langchain-Chatchat支持批量测试集验证:持续保证问答质量

Langchain-Chatchat支持批量测试集验证&#xff1a;持续保证问答质量 在企业知识管理日益智能化的今天&#xff0c;越来越多组织开始部署基于大语言模型&#xff08;LLM&#xff09;的本地问答系统&#xff0c;以提升员工自助服务能力、降低人力咨询成本。然而一个普遍面临的挑…

作者头像 李华