动态规划系列
dblinux
DBL && XLB
展开
-
打家劫舍三部曲
打家劫舍 I一条街道,不能偷相邻房屋,问可以取得的最大钱数。打家劫舍 I分析:dp[i]: 偷前 i 个房间可以获得的最大钱数;是否偷第i个房间,由dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]]);int rob(vector<int>& nums) { // dp[i] : 偷前 i 个房间,可以获得的最大利润 int n = nums.size(); vector<int&g原创 2021-08-27 16:05:37 · 132 阅读 · 0 评论 -
4. 带障碍物的不同路径
1. 题目描述输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障碍物。从左上角到右下角一共有 2 条不同的路径:1. 向右 -> 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右 -> 向右来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-paths-ii著作权归领扣网络所有。商业转载请联系官原创 2021-07-07 15:34:20 · 399 阅读 · 0 评论 -
3. 不同路径
1. 题目描述2. 解法思路:动态规划。动规五部曲:确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组上面的五个部分的详细信息都嵌在代码中。int uniquePaths(int m, int n) { // 1. dp[i][j]:走到第 i 行 第j 列 的路径总数; // 2. dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; // 3. dp[原创 2021-07-07 15:33:07 · 98 阅读 · 0 评论 -
2. 使用最小花费爬楼梯
1. 题目描述数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。链接:https://leetcode-cn.com/problems/min-cost-climbing-stairs示例 1: 输入:cost = [10, 15, 20]原创 2021-07-06 16:11:46 · 79 阅读 · 0 评论 -
1. 斐波那契数
1. 题目描述斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fibonacci-number著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出原创 2021-07-06 15:08:35 · 441 阅读 · 0 评论