时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:594993
本题知识点: 贪心
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
示例1
输入
3
返回值
4
思路:
从1台阶可以直接跳到4(即dp[1]),2台阶可以直接跳到4(即dp[2]),3也可以(即dp[3]),所以,dp[3]+dp[2]+dp[1],从底层也可以到4,所以最后+1。
所以跳到4,总共为 dp[4] = dp[3]+dp[2]+dp[1]+1 = ( dp[2]+dp[1]+1 ) + dp[2] + dp[1] +1=8
如果还不理解,可以理解为在最下面垫多一个台阶
function jumpFloorII(number) {
let dp = new Array(number + 1).fill(1) //初始化为1,因为从底层都可以直接跳到
dp[1] = 1
dp[2] = 2
for (let i = 3; i <= number; i++) {
for (let j = 1; j < i; j++) {
dp[i] += dp[j]
}
}
return dp[number]
}