[LeetCode OJ]- Climbing Stairs

题目要求:爬楼梯可以一次爬一阶或者一次爬两阶,求爬n阶楼梯一共有多少中爬法。

思路:算法课中老师用来举例的DP问题(非常经典!!!)

DP问题:动态规划问题,可以通过状态最优解得到全局最优解,DP问题求解的关键在于找到状态转移方程。在爬楼梯问题中,状态转移方程为

dp【n】 =  dp【n - 1】+ dp【n - 2】;

这个方程的解释为:在爬第n-1层时,共有dp【n - 1】种爬法,在第n-2层时,共有dp【n - 2】种爬法,那么,在爬第n层时,我们就可以知道,要么最后一步爬了一层,要么最后一步爬了两层,也就是dp【n - 1】+dp【n - 2】就是第n层的爬法。

同理,如果爬楼梯有三种爬法,一步爬1层、一步爬2层、一步爬3层,那么状态转移方程为:

dp【n】 =  dp【n - 1】+ dp【n - 2】+ dp【n - 3】;

代码如下。

两种爬法的
三种爬法的


主函数

运行结果为:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 动态规划(Dynamic Programming) 本文包括: 动态规划定义 状态转移方程 动态规划算法步骤 最长...
    廖少少阅读 8,653评论 0 18
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,349评论 0 33
  • 上图为项目完成后的效果图。 此项目是基于H5技术完成的跨平台软件,是慕课网上的一个付费项目实战课程的一部分,今天我...
    无穷369阅读 12,001评论 4 9
  • 每天写二千左右文字,真要我写三百个字,我还真写不出,对我来说生活就是政治。 晚上遇到一个五十多岁的滴滴司机,我们聊...
    竹童阅读 1,475评论 0 0
  • 天刚蒙蒙亮,就在室友的熟睡声中悄悄起床,简单收拾收拾就奔赴图书馆。晚上等保安来催了才离开自习室,披星戴月地往宿舍赶...
    羲和老师阅读 2,990评论 3 5