动态规划也可理解为打表思想,由于求解过程中反复用到已计算的值,故用dp表进行存储,减少计算提高效率。

    如果我们熟悉这类问题,可以一眼看出这是一个动态规划问题。
    当我们不熟悉的时候,怎么想到用动态规划来解决这个问题呢?我们需要从问题本身出发,寻找一些有用的信息,例如Dp63中:

    1. - `(i,j)` 位置只能从 `(i - 1, j)` `(i, j - 1)` 走到,这样的条件就是在告诉我们这里**转移**是 **「无后效性」**的,`f(i, j)` 和任何的 `f(i', j')(i' > i, j' > j)`无关。
    2. - 动态规划的题目分为两大类,一种是求最优解类,典型问题是`背包问题`,另一种就是`计数类`,比如这里的统计方案数的问题,它们都存在一定的递推性质。前者的递推性质还有一个名字,叫做** 「最优子结构」 **——即当前问题的最优解取决于子问题的最优解,后者类似,当前问题的方案数取决于子问题的方案数。所以在遇到求方案数的问题时,我们可以往动态规划的方向考虑。

    通常如果我们察觉到了这两点要素,这个问题八成可以用动态规划来解决。