力扣动态规划之爬楼梯问题

问题描述:

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

思路:

第n个台阶只能从第n-1或者n-2个上来。到第n-1个台阶的走法 + 第n-2个台阶的走法 = 到第n个台阶的走法,已经知道了第1个和第2个台阶的走法,一路加上去。

代码:

class Solution {
    public int climbStairs(int n) {
        int sum;
        int a[] = new int [n+1];//特别注意为n+1,因为数组下标为从0开始的,故n阶楼梯的走法实际上是在a[n+1]的位置上
        if(n==1)
        {
            return 1;
        }
        else if(n==2)
        {
            return 2;
        }
        else{
        a[0] = 0;
        a[1] = 1;
        a[2] = 2;
        for(int i = 3;i<=n;i++)
        {
            a[i] = a[i-1]+a[i-2];

        }
         return a[n];
        }

    }
}

posted on 2021-03-10 20:36  印度宋小宝  阅读(47)  评论(0编辑  收藏  举报

导航