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

跳台阶扩展问题

https://www.nowcoder.com/practice/22243d016f6b47f2a6928b4313c85387

class Solution {
public:
    int jumpFloorII(int number) {
        //主要C++吧,反正quiche的rust 也没读过多少源码

        //跳上n级:跳到各个级别,然后一步跳到n 
        //f[n]=sum(f[1]...f[n-1])
        //f[n-1]=sum(f[1]...f[n-2])

        //f[n]=sum(f[n-1]+f[n-1])
        //f[n]=2f[n-1]
        int cur=1;
        for(int i=2;i<=number;i++){
            //if(i=1)    
            cur=cur*2;
        }

        return cur;
    }
};

如果重来应该怎么一步到位?

拆解成众多小规模的问题。跳到n台阶=跳到 1...n-1.然后再分别跳n-1...1步

ways[n]=ways[1]+...+ways[n-1]

注意到,转移方程之中存在可以复用的地方,即跳到n-1台阶的次数等价于∑ways[1]+...+ways[n-2]

因此 ways[n]=ways[n-1]+ways[n-1]

从第一台阶开始网上迭代即可。

注意边界条件n=0的情况,不考虑

全部评论

相关推荐

牛至超人:哈工大已经很棒了,不需要加括号了,然后咋没有实习经历呢?火速趁寒假整一段实习,导师不让就狠狠肘击
投了多少份简历才上岸
点赞 评论 收藏
分享
2025-12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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