题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:
动态规划
假设现在要跳到第n个台阶,那么我们可以从第1,2,3,…,n-1个台阶开始跳。所以就是在上一步的基础上继续向第n个台阶走,这样的话就是把之前到达1,2,3,…,n-1个台阶的方法加起来就是能够到达当前第n个台阶的总跳法数。
上代码:
public int JumpFloorII(int target) {
int[] dp = new int[target];
Arrays.fill(dp, 1);
for (int i = 1; i < target; i++)
for (int j = 0; j < i; j++)
dp[i] += dp[j];
return dp[target - 1];
}
参考:https://cyc2018.github.io/CS-Notes/#/notes/剑指 Offer 题解 - 10~19?id=_102-矩形覆盖