【朝夕的ACM笔记】目录与索引
子序列问题
一、基本概念
子序列:对于串S,在保持其元素原顺序的情况下,删去任意个数的元素,得到的新串A,则称A为S的子序列。
最长上升子序列(LIS):满足
的最长子序列。
最长公共子序列(LCS):对两个串A,B,其最长的共同子序列。
最长回文子序列:满足
的最长子序列。
二、最长公共子序列(LIS)的求法
2.1
求法
流程如下:
①设
为串S前
位元素构成子串的最长上升子序列的长度。显而易见的,
。
②自左而右遍历整个串S,对于
,若
,则
可以作为
的下一位存在于一个上升子序列中。
即
。
最终的答案
。
③对于每个
,都需要遍历一遍1~
,故整个算法的时间复杂度为