动态规划入门
文章平均质量分 77
Mortalreminder
这个作者很懒,什么都没留下…
展开
-
动态规划入门(五)最长公共子序列(LCS)
动态规划入门(五)最长公共子序列(LCS)1143. 最长公共子序列LCS是一类经典的二维dpdpdp问题,设字符串长度分别为mmm,nnn0≤i<m0≤i<m0≤i<m,0≤j<n0≤j<n0≤j<n则我们可以用dp[i][j]dp[i][j]dp[i][j]表示text1text1text1的前iii个序列和text2text2text2的前jjj个序列的最长公共子序列,则dp[i][j]dp[i][j]dp[i][j]的转移方程为dp[i][j]=dp[i原创 2021-10-14 11:25:50 · 124 阅读 · 0 评论 -
动态规划入门(四) 最长上升子序列(LIS)
动态规划入门(四) 最长上升子序列(LIS)概念动态规划树状数组概念300.最长递增子序列动态规划我们可以定义dp[i]dp[i]dp[i]为以iii结尾的递增子序列长度的最大值(数组dpdpdp的常用套路),则我们可以写出状态转移方程为dp[i]=max(dp[j])+1,(0≤j<i)且nums[j]<nums[i]dp[i]=max(dp[j])+1,(0≤j<i)且nums[j]<nums[i]dp[i]=max(dp[j])+1,(0≤j<i)且nums[j原创 2021-10-11 21:19:19 · 207 阅读 · 0 评论 -
动态规划入门(三)股票问题系列
动态规划入门(三)股票问题系列买卖股票的最佳时机状态转移方程如何表示priceminprice_{min}pricemin边界条件代码买卖股票的最佳时机Ⅱ状态转移方程代码买卖股票的最佳时期含手续费状态转移方程代码买卖股票的最佳时期含冷冻期状态转移方程代码买卖股票的最佳时期Ⅲ思路代码买卖股票的最佳时期Ⅳ股票问题的一般通解状态转移方程边界条件结束语买卖股票的最佳时机121. 买卖股票的最佳时机状态转移方程我们可以用dp[i]dp[i]dp[i]来表示,在前iii日我们可以得到的最大利润,那么我们第ii原创 2021-09-29 20:29:46 · 218 阅读 · 0 评论 -
动态规划入门(二)最优子序列系列
53. 最大子序和对于序列nums,我们需要计算以每一个nums[i]结尾的子序列的最大和,最后取最大值得到整个序列的最大子序和。设以nums[i]结尾的最大序列和为dp[i],则dp[i]会在两种情况中进行挑选:1. 以nums[i-1]结尾的最大序列和直接与nums[i]相加2. 抛弃nums[i-1]结尾的最大序列和,只保留nums[i]写成状态转移方程,也就是边界条件为这个转移方程中dp[i]只与dp[i-1]有关,也就是只与上一次的情况有关。这种情况我们可以进行一个空.原创 2021-09-28 11:12:38 · 688 阅读 · 1 评论 -
动态规划入门(一)打家劫舍系列问题
动态规划核心思想动态规划最核心的思想,就在于将问题拆分为一个个子问题,保留之前的计算结果,以达到减少计算量的效果。我们可以举个例子:A: 1+1+1+1+1+1+1+1 = ?B ( 计算 ) : 8A: 在上面等式的左边写上 "1+" 呢?B (脱口而出): 9A: 你怎么这么快就得到答案了?B: 只要在8的基础上加1就好了A: 所以你不用重新计算,因为你记住了第一个等式的值为8。动态规划算法也可以说是记住求过的解来节省时间198. 打家劫舍...原创 2021-09-27 20:12:45 · 176 阅读 · 1 评论