标签:++ == 多少 public 避免 ret 规划 ems code
??递归和动态规划都是将原问题拆成多个子问题然后求解,他们之间最本质的区别是,动态规划保留了子问题的解,避免了重复计算。
??有 N 阶楼梯,每次可以上一阶或者两阶,求有多少种上楼梯的方法。
??定义一个dp数组存储上楼梯的方法数,dp[i]表示走到第i层楼的方法数,第i层楼梯可以从第i-1层和i-2个楼梯再走一步到达。那么走到第i层楼梯的方式为走到第i-1层的方式和第i-2层的方式和。
dp[ i ]=dp[i-1]+dp[i-2]
class Solution {
public int climbStairs(int n){
int []dp=new int[n+1];
if(n==1)
return 1;
if(n==2)
return 2;
dp[1]=1;
dp[2]=2;
for(int i=3;i<=n;i++){
dp[i]=dp[i-1]+dp[i-2];
}
return dp[n];
}
}
标签:++ == 多少 public 避免 ret 规划 ems code
原文地址:https://www.cnblogs.com/yjxyy/p/11116289.html