西电软件学院算法实验报告动态规划专题
西电软件学院的算法实验报告,内容挺扎实的,覆盖了动态规划的好几个经典问题。像是矩阵链乘、LCS、最长公共子串这些,基本都是刷题和面试常客,也比较清晰,适合边看边写代码练手。
矩阵链乘的动态规划表做得挺规范的,用两个二维数组搞定最优乘法顺序,m
负责记录计算次数,s
用来追踪括号位置。输出过程稍微绕一点,注意递归打印就行。
LCS部分我还挺推荐的,不光算出长度,还能追踪序列内容,挺适合做字符串练习。像c[i][j]
和方向记录的那种套路,常见又实用。
公共子串这块和 LCS 像,不过要注意一点:不相等的时候要把长度清零,这个细节关键。还有Max Sum问题,原理简单但多人会漏掉“全是负数”的特殊情况,这个报告也提到了,挺细心。
还有个多阶段图的最短路径问题,说实话,日常不常用,但作为动态规划的练习题,拿来练练建模能力还不错。图分阶段的思路,蛮适合理解状态转移怎么一层层推进。
如果你正好在搞动态规划,或者准备刷面试题,这份报告还挺值得一读的。有点像是上手 DP 问题的路线图,一边推公式一边想实现,容易入门。
延伸阅读里也整理了不少相关文章,比如Python 实现最长公共子串,或者最长公共子序列细讲,搭配来看更有感觉。
下载地址
用户评论