动态规划入门 - 爬楼梯
学习爬楼梯一直以来的一个困惑,这里加以解释:
看其他人讲解的爬楼梯,比如,爬5级只有从4级爬一次上来或者从3级爬两次上来。
我的疑惑是:比如你爬到了3级,再爬到5级不是有两种方法吗?你爬到了4级,再爬到5级不是一种方法吗?所以,爬5级的方法数应该是爬3级的方法数加上爬4级的方法数再加上3,这里的3就是从3级和4级爬到5级的方法数。
既然所有的博客都没有算上从3级到5级和4级到5的这三种方法,那肯定是自己错了(人云亦云吗?哈哈)。笨人有笨方法,将所有的爬3级、4级和5级楼梯情况都列举出来。如下图:
从图中可以看出,当你从0级爬到4级再爬到5级的时候,和你爬到4级其实种类是一样多的;当你从0级爬到3级,再直接爬到5级,和你从0级爬到3级的种类也是一样多的。可能有人会说:3级到5级有两种方法,3-4-5和3-5。如果你从3-4-5,其中的4-5,已经在0-4-5中包含了。所以,爬5级楼梯的种类就是爬3级的种类加上爬4级的种类。即我们熟悉的斐波那契数列:f(n) = f(n-1) + f(n - 2)