线性DP基础(更新中)

总结

DP在这些问题都体现在“作用在线性空间上的递推
即“从一个或多个 【边界点】开始有方向地向整个状态空间转移、扩展,最后每个状态上都保留了以自身为【目标】的子问题的【最优解】”。
我们看到,设计状态转移方程,不一定要以”如何计算出一个状态“给出,也可以考虑”一个已知状态应该更新哪些后续阶段的未知状态“。

LIS(最长上升子序列)

问题概述

给定一个长度为N的数列A,求数值单调递增的子序列的长度最长为多少。A的任意子序列B可表示为:
请添加图片描述

状态表示

F[i]表示以A[i]为结尾的“最长上升子序列”的长度。

阶段划分

子序列的结尾位置(数列A中的位置,从前到后)

转移方程

请添加图片描述

边界

F[0] = 0

目标

请添加图片描述

LCS(最长公共子序列)

问题概述

最长公共子序列。给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少

状态表示

F[i,j]表示前缀子串 A[1 ~ i] 与 B[1 ~ j] 的“最长公共子序列”的长度。

阶段划分

已经处理的前缀子串(两个字符串中的位置,即一个二维坐标)

转移方程

请添加图片描述

边界

F[i,0] = F[0,j] = 0

目标

F[N,M]

数字三角形(在三角矩阵上移动)

问题概述

给定一个共有N行的三角矩阵A,其中第i行有i列。从左上角出发,每次可以向下方或右下方走一步,最终到达底部。求把经过的所有位置上的数加起来,和最大是多少

状态表示

F[i,j]表示从左上角走到第i行第i列,和最大是多少。

阶段划分

路径的结尾位置(矩阵中的行,列位置,即一个二维坐标)

转移方程

请添加图片描述

边界

F[1,1] = A[1,1]

目标

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值