Leetcode#70: Climbing Stairs

来源:互联网 发布:成龙 张蓝心 知乎 编辑:程序博客网 时间:2024/05/17 21:59

题目描述:爬n阶的楼梯,可以每次爬一阶或者两阶,求不同的方式数量

思路:

  • 这个题目是一个计算n层阶梯情况下,走到顶端的路径种数(要求每次只能上1层或者2层阶梯)。

  • 这是一个动态规划的题目:
    n = 1 时 ways = 1;
    n = 2 时 ways = 2;
    n = 3 时 ways = 3;

    n = k 时 ways = ways[k-1] + ways[k-2];

如有需要,请访问我的Github获取包含测试程序的C++源码。

class Solution{public:     int climbStairs(int n)     {        //当台阶数小于等于0时,方式为0        if(n <= 0)        {            return 0;        }        //当台阶数等于1时,方式为1        if(n == 1)        {            return 1;        }        //当台阶数等于2时,方式为2(1+1或者2)        if(n == 2)        {            return 2;        }        //申请空间,从0到n个台阶,一定是n+1个空间!!!        int *ways = new int[n + 1];        ways[0] = 0;        ways[1] = 1;        ways[2] = 2;        for(int i = 3; i <= n; i++ )        {            //递推公式            ways[i] = ways[i - 1] + ways[i - 2];        }        return ways[n];        delete []ways;        ways = NULL;       }};
原创粉丝点击