最早接触的动态规划问题应该是阶梯问题
阶梯问题的起点不用说,自然是1号阶梯,然后一个递推式子一写f[n]=f[n-1]+f[n-2],完美解决。
后来呢又陆陆续续接触了一些简单的动态规划问题,比如迷宫问题,有障碍的迷宫问题,或者王子救公主问题,
这些问题都是用个二维矩阵,然后从终点逆推回起点,然后得到答案。
等等好像哪里不对,阶梯问题是从起点推终点,迷宫问题怎么又从终点推起点了?搞啥子啊。
动态规划的本质是找到最优子结构,但是我到底是从起点找还是终点啊喂!
最终我得出一个结论,最好算的即是起点
打个比方,阶梯问题的最好算的是f(1)=1,f(2)=2,所以1号阶梯为起点
迷宫问题,王子救公主问题,最好算的当然是王子就在公主所在位置,所以公主所在位置就是起点
又比如最短路径问题,如triangle,起始位置自然是初始层,因为如果只有一层,第一层是最好算的。
好算就是起点。