参考九章的资料。前4种常考。
1. 坐标型: 在第i个节点会怎么样
例题:Triangle, Unique Paths, Jump Game, 飞行棋I
2. 前缀型: 前i个节点怎么怎么样, 分为匹配型和划分型
匹配型: dp[i][j]表示word 1的前i个字符和word 2的前j个字符的最优xxx值。例题:LCS, Edit Distance, wild card match? 最小窗口子序列。 匹配型DP大部分都能用滚动数组优化空间。
划分型: 例题: word break
3. 区间型:
例题: Stone game, 最长回文子串
4. 背包型:其实属于前缀型一种
例题: Backpack系列,点菜问题,考试策略,card game II (LIntCode 1538), cutting a rod (LintCode 700)
背包型DP大部分都能用滚动数组优化空间。
5. 博弈型
例题: coins in a line系列(中间有一道是区间型)
6. 状态压缩型
例题: TSP
7. 树型
例题: 树上的DP, Binary Tree Maximum Path Sum
8. 图型
例题: 图上的DP (面试基本不考)