【动态规划=递归+记忆化存储】跳台阶

求解代码

java 复制代码
public int jumpFloor(int number) {
        int[] memo = new int[number + 1];

        return dp(number, memo);
    }

    private int dp(int number,int[] memo){
        if(number<=2){
            return number;
        }
        

        if(memo[number]!=0){
            return memo[number];
        }

        memo[number]=dp(number-1, memo)+dp(number-2, memo);

        return memo[number];
    }

小贴士

1.要跳到第 n 级,最后一步只有两种可能:从 n-1 级跳 1 级上来、从 n-2 级跳 2 级上来,总方法数就是两者之和。

2.构建一个备忘录数组,用来缓存已经计算过的结果,数组下标对应台阶数 ,值对应该台阶的跳法数。

由于数组的默认值为0,0就表示该台阶的跳法数还未计算;

如果值≠0,就表示已经计算过,直接取值即可。

相关推荐
ZhengEnCi1 小时前
一亿条数据取前100条完全指南:从全量排序到分块流式最小堆的4种解法实测
python·算法·排序算法
zaizai10071 小时前
STL深度剖析2
java·c++·算法
数智奔流1 小时前
MiniMax的低价攻势,撞上“背题”疑云
前端·javascript·算法
青少儿编程课堂1 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:位运算实战——二进制权限与最大异或解析
c++·python·算法·bfs·信息学竞赛
广州智造1 小时前
Radioss中破坏模型FAILTAB1的详细介绍
数据库·人工智能·算法·机器学习·仿真软件·radioss
青少儿编程课堂1 小时前
2026蓝桥杯青少组图形化真题:校园飞机大战解析(全国青少年信息素养·电子学会图形化考级)
c++·python·算法·bfs·信息学竞赛
开开心心就好1 小时前
证件照排版打印工具,免费可自定义尺寸
服务器·开发语言·算法·随机森林·pdf·音视频·散列表
lisw051 小时前
导数与机器学习优化!
算法·机器学习·数学建模
海绵宝宝转agent2 小时前
leetcodehot100个人题解
java·笔记·学习·算法
ZhengEnCi2 小时前
内存装不下怎么取 Top 100:外部排序与分布式 Top-K 的实测取舍
分布式·算法·排序算法