OJ lintcode 爬楼梯

假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

/*
    这道题目的思路是动态规划
    上n个台阶有多少中可能?
    f(n)=f(n-1)+f(n-2)
    
    那么很显然,到达最后一个台阶的方法数目等于前一个台阶的方法数目加上前两个台阶的方法数目,
    到这里我们发现这是一个很典型的斐波那契数列。
    
*/
class Solution {
public:
    /**
     * @param n: An integer
     * @return: An integer
     */
    int climbStairs(int n) {
        // write your code here
        int  *res=new int[n];
        res[0]=1;
        res[1]=1;
        res[2]=2;

        for(int i=3;i<=n;i++){
            res[i]=res[i-1]+res[i-2];
        }
        return res[n];
    }
};
    原文作者:zhaozhengcoder
    原文地址: https://www.jianshu.com/p/0e3000035136
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞