题意:到山顶有n步,每次可以走一步或者两步,问到山顶有多少种走法?
初步分析:
如果n=1的话,显然只有一种,
如果n=2的话,显然只有两种,
而对于大于二的n,到达这里的走法应该是n-2对应的走法加上n-1对应的走法。(这就是核心的非特殊的动态关系)
public class Solution {
public int climbStairs(int n) {
if(n < 3)
return n;
int[] arr = new int[n+1]; //角标是台阶数,值是走法
arr[0]=0;
arr[1]=1;
arr[2]=2;
for(int i=3; i<=n; i++){
arr[i]=arr[i-1]+arr[i-2];
}
return arr[n];
}
}