Dynamic Programming

概述

内容主要来源于九章算法.

极有可能使用 DP 的条件:

  • 求最大最小值
  • 判断是否可行
  • 统计方案个数

不适用 DP 的条件:

  • 求具体方案, 而非个数
  • 暴力解已经是多项式复杂度了

DP 四要素

  • 状态
  • 状态转换方程
  • 初始化
  • 结果

常见 DP 类型:

  • 坐标型
  • 序列型
  • 双序列型
  • 划分型
  • 背包
  • 区间

实现方式

自底向上

循环: 从小到大递推, 通过表格记录递推过程

自顶向下

从大到小搜索, 记忆化搜索.
    - 画搜索树
    - 大的问题的解来自小的问题 (DFS)