任何人都可以向我解释最长公共子序列问题的解决方案吗?具体来说,递归关系是
if(x i = y j )则answer = max L (i- 1,j-1)+1
否则答案=最大{Max L (i-1,j),Max L (i,j-1)}
x i / y i 是构造表中的字母。 Max L 对应于构造的表中的条目。
我的问题是为什么答案maxL(i-1,j-1)+ 1?为什么我们必须在字母匹配时从左上角添加? 谢谢
答案 0 :(得分:0)
(xi = yj)表示字符串在它们各自的当前位置具有相同的字符。
让我们举一个简单的例子:
考虑输入字符串 AGGTAB 和 GXTXAYB 。
最后一个字符'B'
匹配两个字符串。[这是xi == yj条件成立]。
因此LCS的长度可写为:
LCS("AGGTAB", "GXTXAYB") = 1 + LCS("AGGTA", "GXTXAY")
LCS(“AGGTA”,“GXTXAY”)存储在表[i-1,j -1]中(即max L [i-1] [j-1])< / p>