解决什么工作场景

动态规划是笔试和面试里区分度最高的算法题型。无论你是准备大厂校招,还是从其他方向转行做后端、基础架构开发,只要遇到在线评测,几乎绕不开线性 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