Longest Common Subsequence - 最长公共子序列
问题
序列的子序列是原序列的子集,元素相对原序列的顺序不变。例如的子序列有
求两个序列和的最长公共子序列的长度。
解法
设序列长度为(数组从开始,范围)。设为和的最长公共子序列的长度,则有状态转移方程:
初始化;
若,则显然两个序列的这个部分是公共的,所以在的基础上加;
若,则两个序列的这个部分不是公共的,所以仍然保持之前的值,为了获取最大值我们会在和中选取最大的那个;
即为序列和的最长公共子序列的长度值。该算法的时间复杂度为。