DP中最重要的一步是如何定义公共子问题,但定义公共子问题需要很强的创造性和反复的实验,不过,也有一些经常出现的子问题模式
- 输入 $x_1,x_2…x_n$ ,子问题结构为 $x_1,x_2…x_i$ ,以F(i)存储子问题解
- 输入 $x_1,x_2…x_m;y_1,y_2…y_n$ ,子问题结构为 $x_1,x_2…x_i;y_1,y_2…y_j$ ,以 $F(i,j)$ 存储子问题解
- 输入 $x_1,x_2…x_n$ ,子问题结构为 $x_i,x_{i+1}…x_j$ ,以 $F(i,j)$ 存储子问题解
- 输入数据被转换为一棵树,其中子问题结构为其子树