2018: 最长公共子序列LCS

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Normal Judger Creator:
Submit:1 Solved:1

Description

【问题描述】

序列:X={A,B,C,B,D,A,B}

序列:Y={B,C,D,B,A}

序列:Z={B,C,D,B}

序列:W={B,C,D}

Z是(X与Y)的最长公共子序列(Longest-Common-Subsequence),而W虽然是X与Y的公共子序列,但是不是最长的!

【LCS晦涩定义】

给定一个序列X={x1,x2,x3...xm},另一个序列Z={z1,z2,z3...zk}为子序列,如果存在X的

一个严格递增下标序列<i1,i2,i3,i4...ik>,使得所有的j=1,2,...,k,有x[i<j>]=z[j]

例如,Z={B,C,D,B}是X={A,B,C,B,D,A,B}一个最长子序列,相应的下标序列为<2,3,5,7>

如果Z同时是Y的最长子序列,那么Z就是X与Y的最长公共子序列

【输入格式】

输入两行字符串

【输出格式】

输出它们的最长公共子序列

【输入样例】

ABCBDAB

BDCABA

【输出样例】

4

Input

输入两行字符串

Output

输出它们的最长公共子序列

Sample Input Copy

ABCBDAB

BDCABA

Sample Output Copy

4