动态规划:爬楼梯及三种变形

本文详细探讨了动态规划在解决爬楼梯问题中的应用,包括70题的基本爬楼梯问题,递归和记忆化搜索的解法,以及更复杂的场景:一次可上1、2、3步和相邻步伐不能相同的情况。此外,还介绍了746题的最小花费爬楼梯问题,通过动态规划和空间优化策略来求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态规划:爬楼梯

一、70. 爬楼梯

1.1 解法一:递归

0, 1, 2, 3, 5, 8, 13, 21, 34, 55…

    /**
     * 递归
     * @param n
     * @return
     */
    public static int solve01(int n) {
        if (n<=2) return n;
        return solve01(n-1) + solve01(n-2);
    }

1.2 解法三:递归+记忆化搜索

    /**
     * 递归+记忆化搜索
     * @param n
     * @return
     */
    public static int solve02(int n) {
        int[] a = new int[n+1];
        return solve02(n, a);
    }

    private static int solve02(int n, int[] a) {
        if (n<=2) return n;
        if (a[n]!=0) return a[n];
        a[n] = solve02(n-1, a) + solve02(n-2, a);
        return a[n];
    }

1.3 动态规划

    /**
     * 动态递推
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值