动态规划问题
第n阶的方法数量=第n-1阶+第n-2阶,因为最后一步可以走两步,也可以走一步,那么设置一个数组,每个元素代表当前的阶层的数量,则a[n+2]=a[n+1]+a[n]。
public int climbStairs(int n) {
//a[n+2]=a[n]+a[n+1]
int[] a=new int[n+2];
a[1]=1;
a[2]=2;
for(int i=3;i<=n;i++){
a[i]=a[i-1]+a[i-2];
}
return a[n];
}
也可以是用递归解决,但是超时了
public int climbStairs(int n){
int ans=0;
if(n==1||n==0){
return 1;
}
ans=climbStairs(n-1)+climbStairs(n-2);
return ans;
}