动态规划把重叠子问题保存为状态表:先定义状态,再写转移,再决定初始化和遍历顺序。它也是 RustInPractice 主线的收官篇。

对应 dynamic_programming。TUI 番外将另行发布。

Fibonacci 只保留前两个状态,将空间从 O(n) 降至 O(1)。0/1 背包一维表必须逆序遍历容量,防止同一物品被重复选择。LCS demo 按 UTF-8 bytes 计算,非 ASCII 的“字符级 LCS”需要不同表示。

当前背包 demo 假设容量非负、weights/values 等长且权重有效;真实 API 应先验证这些输入,避免负数转 usize 或数组越界。

主线至此完成:基础与 Cargo,所有权类型系统,工程并发,最后落到服务、存储和算法。下一步可以继续 TUI 番外,或以一个带测试、配置、数据库和 HTTP 的 capstone 收束实践。

RustInPractice 主线第 27 篇完结。