
dp动规算法
文章平均质量分 70
这是一个自学、分析动规算法知识的栏目
WGzZsyu
感谢你的关注
展开
-
dp算法篇Day12
我悲喜都,只换来这一场无声的野火。(1) 题目解析。原创 2023-07-24 14:27:21 · 202 阅读 · 0 评论 -
dp算法篇Day11
哎呀,哎呀,流云开一朵,哟诶嘿哟,哟诶嘿哟~”包括之后的一些题目,乍一眼看可能你不会发现它与dp问题有何相连,可是按照按照题目又难以想出 思路、写出代码来。因此,解决这一类问题的关键,现在倒不是状态表示或状态转移方程,而是如何将题目的思路进行转化。(2) 算法原理(1) 题目解析。原创 2023-07-23 23:55:25 · 155 阅读 · 0 评论 -
dp算法篇Day10
"那坚守,某一刻化作乌有"(1) 题目解析我们可以看出,s1,s2拼接后的字符串s3长度一定是一样的。并且s3中的子串一定是s1或s2当中的子串,因此要看s1、s2能否拼接成s3本质就是查找公共子序串。(2) 算法原理(1) 题目解析(2) 算法原理(1) 题目解析(2) 算法原理。原创 2023-07-22 13:48:25 · 105 阅读 · 0 评论 -
dp算法篇Day9
当多画几个测试用例时,你就会发现,这似乎就是从上下两个数组中,选取相同的数,因为题目的要求是"不相交"的线,也就保证了选取的数在原数组中的顺序是相对确定的,本质上就是选取子序列数组!同之前子序列问题不同的是,这次题目要求是分别从两个不同的字符串中,查找相同的子序串。"抱紧你的我,比国王富有"原创 2023-07-20 12:47:45 · 107 阅读 · 0 评论 -
dp算法篇Day8
"留下一首痛斥我的歌"(1) 题目解析针对这一类回文串的动规问题得出该题解的状态表达式,不是经验+题目要求,以什么位置为结尾…… 因为,这样定义的状态表达式是得不出求不出转移方程的。(2) 算法原理(1) 题目解析(2) 算法原理(1) 题目解析。原创 2023-07-17 21:05:14 · 230 阅读 · 0 评论 -
dp算法篇Day7
"抱紧你的我,比国王富有~"(1) 题目解析从题目来看还是很容易理解的,就是找寻数组中构成差值相等的子序列。(2) 算法原理(1) 题目解析(2) 算法原理(1) 题目解析。原创 2023-07-15 23:31:48 · 475 阅读 · 2 评论 -
dp算法篇Day6
我们实质上是再套一层循环for,用来遍历(0,j)中的最长递增序列。因为dp[i]表示的是以i为结尾的,所有递增子序列最长的,(0,j)中都有可能选择比 nums[i] 更小的元素,来构成递增序列。以上就是很多关于 "子数组"类型的题型,但是我们经常看到一个概念叫做 "子序列",那么"子序列" 和 “子数组”之间有什么差别呢?因此,对于这道题而言,首要做的就是先求出这个递增序列的最长长度,再来根据dp表里的值求个数。这是最经典的子序列问题,很多子序列题的做题模式,都会在这里找到根源。祝你好运,向阳而生~原创 2023-06-17 10:57:49 · 455 阅读 · 2 评论 -
dp算法篇Day5
一个正数,需要和正数相乘才能得到一个大的乘积,反之一个负数,需要和一个负数做乘积,才能 得到一个大的乘积。如何将大问题,切分成子问题,那可得做大量练习,才能孰能生巧。尤其注意nums[i]的几种状态,以及dp表达式表示的状态信息,根据 这些信息进行分析画图。这道题和上面的求乘积最大的子数组和有异曲同工之处,不过在这里是求的 "长度",而非乘积和。可以看出,如果我们只是单独定义一个状态表达式,是不足以解决多种情况的。解决子数组问题,首先需要分 " 按长度 "进行分类。"生予希望,生予微光,生予一切无常"原创 2023-06-16 22:59:24 · 242 阅读 · 0 评论 -
dp算法篇Day4
注: 如果仅仅考虑填无穷的话,如果是一个有符号的整型,减去一个负数,会变成一个无比大的正数,会影响dp表的取值。因此我们这里定义一个 MIN_INT:0x3f3f3f 这是一个通常用来作为"最大值或最小值"的数,因为它不管怎么加减,都不会溢出,出现未定义行为。如果你对上面 进行 "至多两笔交易" 特别熟悉,也弄懂了状态表达 和 状态方程式,那么这解这道题的代码,甚至可以说 "原封不动" copy一份即可。只是值得注意,虽然说的是至多k次交易,但是有k+1种情况。"我把每一天都当做新开始,新革命。原创 2023-06-16 11:07:08 · 155 阅读 · 0 评论 -
dp算法篇Day3
如果做过打家劫舍1,会很明白其中的算法原理,这里无非是将当时的线性数组,转换为了循环数组。针对这类问题的首要方法,就是进行预处理!将循环数组,转换为线性数组。前面两篇dp算法篇,针对的问题都是单状态模式,即每个位置只有一种情况进行选择。那么在一个位置,面对多种情况又该作何选择呢?对于某个位置,存在多种情况下,我们通常会增加一个dp表进行表示,切分子问题。注意区间的划分,这里划分的区间为 [left,right] 都时闭区间。祝你好运,向阳而生~原创 2023-06-15 11:45:54 · 124 阅读 · 0 评论 -
dp算法篇Day2
方案二的思路,是以(i,j)为起点,更新最低的勇士健康数,影响它数值的大小仅仅只有前一个格子(i,j+1) 或者 下一个格子(i+1,j)。此外,条件初始化也是个值得考虑的问题,因为勇士要拯救公主,踏过最后一间房屋的血量一定得 >= 1。届时,dp表示的是以(i,j)位置到终点的最低血量,因此最后的返回值填上dp[0][0]即起点即可。方案一涉及到数据具有后效性问题,也就意味着不能直接得到准确的dp[i][j],其受到多个因素的影响。本道题仍然和普通的路径分析没什么区别,唯一注意的是,增添表填值注意改变。原创 2023-06-14 11:02:15 · 706 阅读 · 0 评论 -
dp算法篇Day1
1、第N个斐波那契数"多希望有人来陪我,度过末日啊~"讲讲我为什么突然想更新这篇栏目。想想自己也算 "系统" 接触计算机这个学科也有差不多一年了,回想起当初下定决心要全身心投入到这个专业或者说行业中来,现在到了这样的地步,是否很符合当初对自己的期待,对这个专业行业的期待?想想做软件开发相关最最基础的四大组件,算法和数据结构、操作系统和计算机网络、数据库,再怎么说到了现在也涉略一二。原创 2023-06-13 22:30:23 · 324 阅读 · 0 评论