解决什么工作场景
动态规划是笔试和面试里区分度最高的算法题型。无论你是准备大厂校招,还是从其他方向转行做后端、基础架构开发,只要遇到在线评测,几乎绕不开线性 DP 和背包 DP。这门课不碰底层语法,也不讲面向对象,只盯着一个核心场景:怎么把一个模糊的业务需求,拆成有状态转移方程的数学模型。比如给定预算求最大收益、给定路径求最少代价,这些看似不同的题目,底层都是同一套动态规划思路。资料里用的语言是 C++,但重点在解题逻辑,不在语言特性,所以对语法要求并不苛刻。
适合什么基础与学习顺序
这批资料不适合零基础。你需要能独立写出基础的递归函数,熟悉一维和二维数组操作,了解简单的复杂度分析。如果连循环和条件判断都写不顺,建议先补完基础语法和简单递归再来看。拿到资料后,建议按这个顺序看:先看动态规划总论,建立状态定义和状态转移的概念;接着看线性 DP 的几个案例,重点体会怎么从暴力搜索过渡到记忆化,再到自底向上的递推;最后再看背包 DP。背包部分先看基础的零一背包,搞懂二维状态怎么来的,再看状态压缩怎么把二维降到一维,最后看完全背包。不要跳着看,压缩技巧是建立在你对原始状态转移完全理解的基础上的。
学完能独立做什么
学完之后,你应该能独立完成几件事:面对一道没见过的动态规划题,能自己定义状态,写出转移方程,而不是靠背模板硬套。具体来说,线性 DP 的案例学完后,你能处理最长上升子序列、最大子段和这类一维状态推导问题。背包 DP 学完后,你能手写零一背包和完全背包的原始版本,并且知道怎么用滚动数组把空间复杂度降下来。资料怎么配合练习?看视频时别光跟着听,每讲完一个案例,暂停下来自己敲一遍代码。资料里虽然有完整讲解,但动态规划这东西,看懂和能写出来是两码事。建议每看完一个模型,去题库里找三到五道同类型题目练手,先自己想二十分钟,实在没思路再翻题解。这样一套下来,比连续刷完所有视频有效得多。
动态规划、线性DP、背包DP
课程目录
* 01 C++算法(四)/
* 01 C++算法 - 动态规划(算法思想).mp4 (158.41 MB), 51:17
* 02 C++算法 - 线性DP:案例1.mp4 (83.58 MB), 27:17
* 03 C++算法 - 线性DP:案例2.mp4 (89.97 MB), 30:39
* 04 C++算法 - 线性DP:案例3.mp4 (105.15 MB), 34:01
* 05 C++算法 - 背包DP:01背包.mp4 (97.42 MB), 34:46
* 06 C++算法 - 背包DP:01背包(状态压缩).mp4 (45.26 MB), 15:40
* 07 C++算法 - 背包DP:完全背包.mp4 (38.31 MB), 12:44
* 08 C++算法 - 背包DP:完全背包(状态压缩).mp4 (37.77 MB), 12:28
* 09 C++算法 - 背包DP:多重背包.mp4 (54.52 MB), 19:14






