70. Climbing Stairs

来源:互联网 发布:知乎什么话题最火 编辑:程序博客网 时间:2024/06/14 18:29

题目链接:https://leetcode.com/problems/climbing-stairs/#/description

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?

Note: Given n will be a positive integer.

这是一道简单经典的动态规划题,由于每次只能跳一阶或两阶,所以第n个台阶只能从第n-1个台阶或第n-2个台阶上跳上去,假设f(n)表示跳到第n阶的方法,那么f(n) = f(n-2) + f(n-1)。所以,这道题的关键点就是记录前一阶和前两阶的方法个数。

代码如下:

class Solution {public:    int climbStairs(int n) {        if(n < 3)            return n;        int a, b, dp;        a = 1;        b = 2;        dp = 0;        for(int i = 3; i <= n; ++i){            dp = a + b;            a = b;            b = dp;        }        return dp;    }};
0 0
原创粉丝点击