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

求解代码

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,就表示已经计算过,直接取值即可。

相关推荐
无定义_8 分钟前
Codeforces Round 1124 (Div. 2)
算法
垆边人似月.2 小时前
任务混部(200 分档)
算法
言乐62 小时前
Python区分广度优先深度优先宽度优先的区别
python·算法·深度优先·广度优先·宽度优先
Rnan-prince2 小时前
LeetCode 股票买卖系列:一个动态规划状态机模板通吃四题
leetcode·动态规划
如意猴2 小时前
【C++】007 C/C++ 内存管理机制、malloc与new的区别及模板初阶
java·c++·算法
朝朝辞暮i2 小时前
C++ 第 32 课:main()、rclcpp::init()、spin()、shutdown()
开发语言·c++·算法
朝朝辞暮i4 小时前
C++ 第 31C 课:Subscriber 到底是什么
开发语言·c++·算法
Evand J4 小时前
【MATLAB例程】三维RRT+APF路径规划与AOA-TDOA融合定位算法。附代码的下载链接
算法·matlab·路径规划·rrt·tdoa·apf·aoa
海绵宝宝转agent5 小时前
leetCode100算法开源笔记分享
笔记·算法
写后端的胖头鱼6 小时前
时间复杂度 & 空间复杂度
java·数据结构·算法·时间复杂度·空间复杂度