T793066 【C1148】 - 最长公共子序列LCS
题目背景
子串 与 子序列
给定一个字符串,例如 "abcde":
子串:原字符串中连续的一段字符。例如 "bcd"、"cde" 是子串,但 "ace" 不是(因为它在原串中不连续)。
子序列:从原字符串中删除若干个(可以是 0 个)字符后,剩余字符保持原有相对顺序拼接得到的字符串,不要求连续。例如 "ace"、"abe"、"bd" 都是 "abcde" 的子序列。
简单来说:子串要求连续,子序列只要求顺序不变,允许跳字符。子串一定是子序列,反之不成立。
题目描述
给定两个字符串A和B,求它们的最长公共子序列(Longest Common Subsequence, LCS)的长度,即:找到一个字符串 S,使得S既是A的子序列,又是B的子序列,且S的长度最大,输出这个最大长度。
输入格式
程序的输入来自标准输入。输入中的每组数据包含两个字符串,表示给定的序列。这两个序列之间由任意数量的空白字符分隔。输入数据均为合法数据。
输入以EOF作为结束标志
输出格式
对于每组数据,程序在标准输出中输出最长公共子序列的长度,每个结果占一行的开头位置。
说明/提示
100%的数据:每个字符串长度在1 - 5000之间
**【补充说明】**
字符串中不会包含空格,每个字符串由小写、大写英文字母组成