题解 | #跳台阶扩展问题#

跳台阶扩展问题

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
};
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务