问题描述
求解给定两个字符串的最长公共子序列的长度
输入:X = { a, b, c, b, d, a, b },Y = { b, d, c, a, b, a }
输出:4
解释:
{ b, c, b, a }是他们的最长公共子序列
解题
计算 的最长公共子串,设最长公共子串为
- 如果有
,那么
,那么
,其中
是
和
的最长公共子串。
- 如果
:
- 如果
,那么
和
的最长公共子串等于
和
的最长公共子串
- 如果
,那么
和
的最长公共子串等于
和
的最长公共子串
- 如果
设 dp[i][j]
表示和
的最长子串长度,则转移方程为:
注:这里是这样一种转移关系