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

leetcode || 70、 Climbing Stairs

时间:2015-04-08 13:18:01      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:leetcode   dp   

problem:

You are climbing a stair case. It takes n steps to reach to the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

Hide Tags
 Dynamic Programming
题意:爬上一个 n阶 的楼梯,每次爬一阶或者两阶,求一共有多少不同的方法

thinking:

(1)说实话,看到题第一反应使用 DFS ,但是深搜的时间复杂度为解个数的线性表达式,肯定会超时

(2)提示使用DP,时间复杂度为O(n),这道题的状态转移方程式很简单: a[i]=a[i-1]+a[i-2];唯一有问题的是初始化:a[0]=1,a[1]=2

提交试错时改正就是。

code:

class Solution {
public:
    int climbStairs(int n) {
        vector<int> a(n,0);
        a[0]=1;
        a[1]=2;
        if(n<3)
            return a[n-1];
        for(int i=2;i<n;i++)
            a[i]=a[i-1]+a[i-2];
        return a[n-1];    
        
    }
};


leetcode || 70、 Climbing Stairs

标签:leetcode   dp   

原文地址:http://blog.csdn.net/hustyangju/article/details/44937807

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