动态规划基础知识---爬楼梯

1.动态规划是由前一个状态推导过来的,贪心是局部直接选最优

2.动态规划需要明白状态转移公式是很重要的。

动态规划五步曲:

1.确定dp数组(dp table)以及下标的含义。

2.确定状态转移公式。

3.dp数组如何初始化。

4.确定遍历顺序。

5.举例推导dp数组。

下面写一道题目:

  1. 爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:

输入:n = 2

输出:2

解释:有两种方法可以爬到楼顶。

  1. 1 阶 + 1 阶

  2. 2 阶

示例 2:

输入:n = 3

输出:3

解释:有三种方法可以爬到楼顶。

  1. 1 阶 + 1 阶 + 1 阶

  2. 1 阶 + 2 阶

  3. 2 阶 + 1 阶

思路:这题一读题目就不是传统的方法可以解决的,是动态规划来解决的,为什么是动态规划来解决呢,是因为当前的状态由前一次状态决定的,但这道题怎么写呢,我没有思路,但我根据上面的做题方法走一遍。

难。。。。

然后我看了代码随想录的动态规划基础知识和学习了斐波那契如何写,然后学习了爬楼梯的思路,接下来我要自己写了。

代码:

复制代码
class Solution {
    public int climbStairs(int n) {
        int [] dp = new int [n + 1];
    
        if(n <= 2){
            return n;
        }
        dp[1] = 1;
        dp[2] = 2;
        
        for(int i = 3;i <= n; i++){
            dp[i] = dp[i - 1] + dp[i - 2];
        }

        return dp[n];


    }
}
相关推荐
不一样的故事1266 小时前
军工行业合规与基础认知
数据结构·经验分享·算法
To_OC13 小时前
LC 15 三数之和:双指针不难,难的是把去重做对
javascript·算法·leetcode
renhongxia115 小时前
世界模型,是“空中楼阁”还是AGI的“最后一块拼图”?
运维·服务器·数据库·人工智能·算法·agi
zephyr0518 小时前
动态规划-最长上升子序列问题
算法·动态规划
闪电悠米18 小时前
力扣hot100-56.合并区间-排序详解
数据结构·算法·leetcode·贪心算法·排序算法
卡提西亚19 小时前
leetcode-1438. 绝对差不超过限制的最长连续子数组
算法·leetcode·职场和发展
Java面试题总结20 小时前
LeetCode 93.复原IP地址
算法·leetcode·职场和发展·.net
从零开始的代码生活_20 小时前
C++ 多态详解:虚函数、动态绑定、抽象类与虚表原理
开发语言·c++·后端·学习·算法
Tisfy21 小时前
LeetCode 3867.数对的最大公约数之和:按题目说的做(gcd)
算法·leetcode·题解·模拟·最大公约数·gcd
泷寂21 小时前
最小生成树 (MST基础)
算法