
动态规划
文章平均质量分 86
吃不胖的熊猫
时常总结,时常复盘,时常思考,常常复习
展开
-
【动态规划】24子数组系列_最长湍流子数组_C++
题目解析:题目让我们求返回arr的最大湍流子数组的由题可得:如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是。那么需要前面一个位置是“上升”的才满足湍流子数组;所以此时i位置的最长湍流子数组应该是前面一个位置为“上升”的最长湍流子数组的长度+1;而“前面一个位置为“上升”的最长湍流子数组的长度”就是我们的状态表示:g[i-1]所以:g[i]=f[i-1]+1原创 2024-01-19 10:42:19 · 463 阅读 · 0 评论 -
【动态规划】23子数组系列_等差数列划分_C++
题目解析:题目让我们求数组nums中所有为等差数组的个数。由题可得:一个等差数列。首先先思考dp表里面的值所表示的含义(是什么?)dp[i]表示以i位置为结尾,数组nums中所有为等差数组的子数组个数,这种状态表示怎么来的?1.经验+题目要求用之前或者之后的状态,推导出dp[i][j]的值;根据最近的最近的一步,来划分问题经验:以i位置为结尾题目让我们求数组nums中所有为等差数组的子数组个数原创 2024-01-18 11:25:45 · 437 阅读 · 0 评论 -
【动态规划】20子数组系列_环形子数组的最大和_C++(medium)
题目解析:题目让我们求返回nums的非空的最大可能和这道题如果是按照--是不对的,因为这道题中是环形数组。求出如果不是环形数组那么他的最大和是多少;(求最大和),这里题目求和最大值,如果我们求得这个数组里的连续最小和,再用数组总和-最小和---》就可以得到这个数组的最大和(求最小和)原创 2024-01-12 17:10:01 · 536 阅读 · 0 评论 -
【动态规划】19子数组系列_最大子数组和_C++(medium)
题目解析:题目让我们找出一个具有最大和的连续子数组,返回其最大和。(保证填表的时候不越界)根据状态转移方程,我们需要初始化dp[i-1]这里我们采用创建虚拟节点的方式:原创 2024-01-11 13:19:07 · 477 阅读 · 0 评论 -
【动态规划】12简单多状态dp问题_打家劫舍II_C++ (medium)
因为i位置可选可不选,所有两种情况:第一种情况:(i位置选)那么i-1位置必然不选:此时我们只要知道在i-1之前所能够偷窃到的最高金额(g[i-1])+i位置的金额(nums[i])所以这种情况下的状态转移方程为:dp[i]=f[i-1]+nums[i];第二种情况:(i位置不选)那么i-1位置可以选也可以不选,这里会分两种情况:情况a:(i-1选)此时我们只要知道在i-1之前所能够偷窃到的最高金额(f[i-1])所以这种情况下的状态转移方程为:原创 2023-12-25 21:02:04 · 1096 阅读 · 0 评论 -
【动态规划】11简单多状态 dp 问题_按摩师_C++(easy)
题目解析:题目让我们求按摩师找到最优的预约集合(总预约时间最长)由题可得:按摩师每个预约都可以选择,并且她我们以示例一分析:所以这里的最长预约时长是4。原创 2023-12-25 00:09:59 · 1126 阅读 · 0 评论 -
【动态规划】09路径问题_最小路径和_C++(medium)
题目解析:题目让我们求从左上角到右下角的路径,使得路径上的数字总和为最小由题可得:每次只能向下或者向右移动一步。原创 2023-12-21 22:26:01 · 1256 阅读 · 0 评论 -
【动态规划】08路径问题_下降路径最小和_C++(medium)
题目链接:leetcode下降路径最小和目录题目解析:算法原理1.状态表示2.状态转移方程3.初始化4.填表顺序5.返回值编写代码题目让我们求通过 的下降路径 的 最小和 由题可得:在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)如图:我们用示例一分析:当我们从数字1开始走的时,此时有如上图几种走法;其他数字也是同理我们这里只要下降路径 的 最小和,所以这里我们这里可以得到这两条下降路径和最短:先创建一个dp表首先先思考dp表里面的值所表示的含义(是什么?原创 2023-12-20 00:08:41 · 1023 阅读 · 0 评论 -
【动态规划】07路径问题_礼物的最大价值_C++(medium)
题目解析:题目让我们求怎样走才能可以拿到最高价值的珠宝我们用示例一来分析:当我们沿着这条路径走的时候可以得到最大值:12。原创 2023-12-18 20:40:45 · 1089 阅读 · 0 评论 -
【动态规划】06路径问题_不同路径II_C++(medium)
题目解析:题目让我们求由题可得:机器人位于一个m x n网格的左上角机器人每次只能向下或者向右移动一步我们拿示例1来分析:则根据题目要求我们所以这里我们一共。原创 2023-12-13 23:47:41 · 1149 阅读 · 0 评论 -
【动态规划】05路径问题_不同路径_C++
题目解析:题目让我们求总共有多少条不同的路径可到达右下角;由题可得:机器人位于一个m x n网格;机器人每次只能向下或者向右移动一步;我们拿示例2来分析:则根据题目要求我们所以这里我们一共。原创 2023-12-09 16:34:16 · 1057 阅读 · 0 评论 -
【动态规划】04斐波那契数列模型_解码方法_C++(medium)
题目解析:题目让我们求方法的由题可得:0和有前导0(比如06、08、04)的都不能解码;:s=“1 2”那么1和2可以单独解码;也可以是两个一起‘12’解码;所以这里解码方法为2;s=“0 6”这里0不能解码,06也不能解码所以这里解码方法为0;原创 2023-12-10 17:30:25 · 932 阅读 · 0 评论 -
【动态规划】03斐波那契数列模型_最小花费爬楼梯_C++(easy2)
题目解析:题目让我们求达到楼梯顶部的最低花费.由题可得:cost[i]是从楼梯第i个台阶向上爬需要支付的费用(每一阶所需的费用由cost[ ]里的值决定)。可以选择从下标为0或下标为1的台阶开始爬楼梯,支付费用后,可选择向上爬一个或者两个台阶我们从题目里的实例一来分析:如果楼顶是i,那么这里的最小花费为应该为10,但是这里输出是15。原创 2023-12-18 19:43:06 · 979 阅读 · 0 评论 -
【动态规划】03斐波那契数列模型_最小花费爬楼梯_C++(easy1)
题目解析:题目让我们求达到楼梯顶部的最低花费.由题可得:cost[i]是从楼梯第i个台阶向上爬需要支付的费用(每一阶所需的费用由cost[ ]里的值决定)。可以选择从下标为0或下标为1的台阶开始爬楼梯,支付费用后,可选择向上爬一个或者两个台阶那么楼顶在哪?我们从题目里的实例一来分析:如果楼顶是i,那么这里的最小花费为应该为10,但是这里输出是15。原创 2023-12-07 21:58:37 · 487 阅读 · 0 评论 -
【动态规划】02斐波那契数列模型_三步问题(easy)
题目解析:题目由题可得:小孩一次可以上1阶、2阶或3阶:我们这里逐个在每一阶的上楼方式分析一下,看看有什么规律:1.显然,我们方式:只跳一阶即可直达。2第一种方式:我们可以从0开始一步直接到达2的位置(0-->2)所以第二种方式是不管你用什么方法,跳到1后,再从1加一步跳到2;显然,我们跳到1台阶,我们只需再跳一步0-->1,就可从1到达2;所以所以到达台阶2一共有两种方法3当n=3,即到达3阶:第一种方式:我们可以从0开始一步直接到达3的位置(0-->3),所以第二种方式是。原创 2023-12-07 19:43:22 · 1706 阅读 · 0 评论 -
【动态规划】01第 N 个泰波那契数(easy)
题目解析:题目由题可得:我们可以把它改写为:接着我们举几个例子,带入上面的公式来分析:我们可以得到,当我们想得到的值就需要将相加就可以得到;原创 2023-11-30 17:40:42 · 433 阅读 · 0 评论