解决思路:
如果我们从头开始看,从第三个台阶有几种跳法?为什么要说从第三个台阶开始呢,因为第三个台阶包含了青蛙跳两步 和青蛙跳一步的所有情况,即 1+2,1+1+1,2+1的情况,我们在简化一下把(1+1)+1 简化为 2+1,其实第三台阶的就是只有1+2或者2+1的跳法,第三个跳法就是前一步,前两步跳法的总和。这就和我们的斐波那契数列很相似了,类比到第四和第五都是类似的情况,到了这里,解决的思路就很清晰了。
/**
* 青蛙跳台阶问题
* 思路是
* 第二个台阶只能跳二阶或者从第一个台阶跳一阶
* 第二个台阶只能跳二阶或者从第一个台阶跳一阶
* 第三个台阶可以从第一个台阶跳两阶段
* 从第二个台阶跳一阶
* */
public class demo1 {
public static void main(String[] args) {
System.out.println(getRun(3));
}
static int getRun(int target){
int[] dp=new int[1005];
dp[1]=1;
dp[2]=2;
int goal=dp[1]+dp[2];
for(int i=3;i<=target;i++){
dp[i]=dp[i-1]+dp[i-2];
}
return dp[target];
}
}