您的位置:首页 > 大数据 > 人工智能

Climbing Stairs

2017-01-05 08:10 344 查看
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.

Subscribe to see which companies asked this question
题目:爬楼梯,一步和两步,具体分析看我的文章15级楼梯,一步最多三级,爬上楼梯可以有多少种走法实现
思想:思路是一样的,只是递归的方法GG了,选用动态规划,代码如下

class Solution {

public:

    int climbStairs(int n) 

    {

        //if(n==1) return 1;                                        //递归被拒了。。。

        //if(n==2) return 2;

        //return climbStairs(n-1)+climbStairs(n-2);

        

        if(n <= 2)                                                  //传说中的动态规划

            return n;

        int* step = new int
;

        step[0] = 1;

        step[1] = 2; 

        for(int i = 2; i < n; i++) {

            step[i] = step[i-1] + step[i-2];

        }

        return step[n-1];

    }

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ leetcode