力扣动态规划之爬楼梯问题
问题描述:
假设你正在爬楼梯。需要 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];
}
}
}