#2309. 孩子有多像爸爸—最长的公共子序列

孩子有多像爸爸—最长的公共子序列

说明

假设爸爸对应的基因序列为X=x1x2x3xmX={x_1,x_2,x_3,…,x_m},孩子对应的基因序列Y=y1y2y3ynY={y_1,y_2,y_3,…,y_n},那么怎么找到他们有多少相似的基因呢?

如果按照严格递增的顺序,从爸爸的基因序列X中取出一些值,组成序列Z=xi1xi2xi3xikZ={x_{i1},x_{i2},x_{i3},…,x_{ik}},其中下标i1i2i3ik{i_1,i_2,i_3,…,i_k }是一个严格递增的序列。那么就说Z是X的子序列,ZZ中元素的个数就是该子序列的长度。

XXYY的公共子序列是指该序列既是XX的子序列,也是YY的子序列。

最长公共子序列问题是指:给定两个序列X=x1x2x3xmY=y1y2y3ynX={x_1,x_2,x_3,…,x_m}和Y={y_1,y_2,y_3,…,y_n},找出XXYY的一个最长的公共子序列。

输入格式

第一行是一个整型数m(m<100)表示共有m组测试数据。

每组测试数据的第一行是一个字符串s1(0<字符串长度<1000)。

第2行,是一个字符串s2(0<字符串长度<1000)。

输出格式

对于每一组输入,输出s1和s2的最长公共子序列长度。

每组的输出占一行。

样例

2
ABCADAB
BACDBA
ACDEF
ADF
4
3

来源

《趣学算法》4.3节