动态规划入门(三):一些经典动态规划模型
1.最大子段和
问题描述:给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。
例:-2 11 -4 13 -5 -2
最大字段和为:11-4+13=20
详细参考博主这篇博客:从最大子段和到最大子矩阵和
2.最长上升子序列
LIS问题的描述为:给定一个整数序列array,找到它的所有严格递增子序列中最长的序列,输出其长度。
例:10 9 2 5 3 7 101 18
它的最长上升子序列有:2 5 7 101、2 5 7 18、2 3 7 101、2 3 7 18
长度均为4,因此结果为4。
详细参考博主这篇博客:最长上升子序列(LIS)问题的解决及优化
3.最长公共子序列
LCS问题的描述为:给定两个整数序列a和b,找到它们所有的公共子序列中最长的序列,输出其长度。
例:a:6 4 8 1 3 2、b:4 7 6 2 3 8 6 1
最长公共子序列有:6 8 1、4 8 1,长度均为3,因此结果为3。
详细参考博主这篇博客:最长公共子序列(LCS)问题的解决及优化、最长公共子串问题
4.有向无环图(DAG)上的动态规划
详细参考博主这篇博客:有向无环图(DAG)上的动态规划