考虑两个字符串A =“ qpqrr”和B =“ pqprqrp”。设x为A和B之间最长公共子序列的长度(不一定是连续的),而y为A和B之间最长公共子序列的数目。则x + 10y = ___。
(A) 33
(B) 23
(C) 43
(D) 34答案: (D)
说明: // LCS的长度为4。存在3个长度为4的LCS“ qprr”,“ pqrr”和qpqr
子序列是一个序列,可以通过从另一个序列中选择零个或多个元素来派生该序列,而无需更改其余元素的顺序。子序列不必是连续的。由于给定字符串A =“ qpqrr”和B =“ pqprqrp”的长度非常小,因此我们不需要构建5×7矩阵并使用动态编程来求解。相反,我们可以仅通过蛮力手动解决它。我们将首先检查是否存在长度为5的子序列,因为min_length(A,B)= 5。
由于没有子序列,因此我们现在将检查长度4。“ qprr”,“ pqrr”和“ qpqr”在两个字符串都是通用的。
X = 4和Y = 3
X + 10Y = 34
该解决方案由Pranjul Ahuja提供
这个问题的测验