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

70:Climbing Stairs【DP】

时间:2015-04-10 16:56:27      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:click~

/*题意:n阶的台阶,每次只能上一步或两步,共有多少种方法 */

/**
 *思路:简单递推,d[i] = d[i-1] + d[i-2]
 *      两种方法,一种空间复杂度O(1),另一种O(n)
 */


//O(1)
class Solution {
public:
    int climbStairs(int n) {
        if(n <= 2) return n;
        int d1 = 1, d2 = 2, d3;
        for(int i = 3; i <= n; i ++) {
            d3 = d1+d2;
            d1 = d2;
            d2 = d3;
        }
        return d3;
    }
};


/* O(n)
class Solution {
public:
    int climbStairs(int n) {
        int *d = new int[n+1];
        if(n <= 2) return n;
        d[1] = 1, d[2] = 2;
        for(int i = 3; i <= n; i++)
            d[i] = d[i-1] + d[i-2];
        return d[n];
    }
};
*/

  

70:Climbing Stairs【DP】

标签:

原文地址:http://www.cnblogs.com/jzmzy/p/4414687.html

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