题目
给定n个台阶,每次走1个或2个台阶;总共有多少种走法?
分析
动态规划
dp[i]表示i个台阶的走法
dp[i]=dp[i-1]+dp[i-2]
dp[0]=0;
dp[1]=1;
dp[2]=2;
实现
public static int climbStairs(int n){
if(n==0){
return 0;
}
if(n==1){
return 1;
}
int[] dp=new int[n+1];
//初始化
dp[0]=0;
dp[1]=1;
dp[2]=2;
//递推
for(int i=3;i<=n;i++){
dp[i]=dp[i-1]+dp[i-2];
}
return dp[n];
}