码迷,mamicode.com
首页 > 其他好文 > 详细

动态规划(斐波那契系列)---爬楼梯

时间:2019-07-01 20:04:18      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:++   ==   多少   public   避免   ret   规划   ems   code   

动态规划

??递归和动态规划都是将原问题拆成多个子问题然后求解,他们之间最本质的区别是,动态规划保留了子问题的解,避免了重复计算。

爬楼梯

70. Climbing Stairs (Easy)

题目描述:

??有 N 阶楼梯,每次可以上一阶或者两阶,求有多少种上楼梯的方法。

思路分析:

??定义一个dp数组存储上楼梯的方法数,dp[i]表示走到第i层楼的方法数,第i层楼梯可以从第i-1层和i-2个楼梯再走一步到达。那么走到第i层楼梯的方式为走到第i-1层的方式和第i-2层的方式和。

dp[ i ]=dp[i-1]+dp[i-2]

代码:

class Solution {
    public int climbStairs(int n){
    int []dp=new int[n+1];
    if(n==1)
        return 1;
    if(n==2)
        return 2;
    dp[1]=1;
    dp[2]=2;
    for(int i=3;i<=n;i++){
        dp[i]=dp[i-1]+dp[i-2];
    }
    return dp[n];
}
}

动态规划(斐波那契系列)---爬楼梯

标签:++   ==   多少   public   避免   ret   规划   ems   code   

原文地址:https://www.cnblogs.com/yjxyy/p/11116289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!