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之间 **【补充说明】** 字符串中不会包含空格,每个字符串由小写、大写英文字母组成