题解 | #跳台阶扩展问题#
跳台阶扩展问题
http://www.nowcoder.com/practice/22243d016f6b47f2a6928b4313c85387
d[i] 爬上第i阶的楼梯总共有d[i]种方法
d[0]初始化为1,本题数值基础,可以理解为不管哪层阶梯,都可以一步迈上,至少有d[0]=1种方法
很容易得到第一级阶梯有一种方法d[1] = 1; 第二级阶梯有两种方法d[2] = 2;
d[3]表示跳上第3级阶梯有d[0]+d[1]+d[2]种方法,可以理解为第三级阶梯可能是
1、直接一步迈上来的
2、从第一级阶梯迈两阶上来的
3、从第二级阶梯迈一阶上来的
1+1+2=4
以此类推d[i] += d[i-j];
(1<=i<=number; 1<=j<=i)
function jumpFloorII(number)
{
let d = new Array(number+1).fill(0)
d[0] = 1
for(let i = 1; i <= number; i++) {
for(let j = 1; j <= i; j++) {
d[i] += d[i-j]
}
}
return d[number]
// write code here
}
module.exports = {
jumpFloorII : jumpFloorII
};