/ Vijos / 题库 /

最长公共子序列

最长公共子序列

时间限制:1秒  内存限制:256M


【问题描述】

  序列 \(x_1,x_2,...,x_m\) 的子序列,就是把其中的某些项删除后剩下的序列。例如”ABCBDAB”删除红色的字母后得到子序列“BCAB”。下面是更专业的定义:
  我们称序列 \(Z= <z_1,z_2,...,z_k>\) 是序列 \(X= <x_1,x_2,...,x_m>\) 的子序列当且仅当存在 严格上升 的序列 \(<i_1,i_2,...,i_k>\),使得对 \(j=1,2,...,k\) 有 \(x_{i_j}=z_j\)。比如 Z=<a,b,f,c> 是X=<a,b,c,f,b,c>的子序列。
  现在给出两个序列 \(X\) 和 \(Y\),你的任务是找到 \(X\) 和 \(Y\) 的最大公共子序列,也就是说要找到一个最长的序列 \(Z\),使得 \(Z\) 既是 \(X\) 的子序列也是 \(Y\) 的子序列。最长公共子序列的英文缩写为 \(LCS\)。

【输入格式】

  包含两行,每行是一个只含有英文字母的字符串。字符串长度不超过5000。

【输出格式】

  一个整数,表示输入的两个字符串的最长公共子序列。

【输入输出样例】

 Input

ABCBDAB
BDCABA

 Output

4

【数据限制】

  字符串长度不超过5000。

【来源】

  Mr.he

信息

ID
1162
难度
3
分类
动态规划 | LCS 点击显示
标签
(无)
递交数
3
已通过
1
通过率
33%
被复制
5
上传者