#B2175. 最长公共子序列
最长公共子序列
题目描述
给定一个长度为 的整数序列 和一个长度为 的整数序列 ,请你求出它们的最长公共子序列的长度。
一个序列的子序列,是指从原序列中删除若干个元素(也可以不删除),并保持剩余元素的相对顺序不变后得到的序列。子序列中的元素在原序列中不必连续。例如,序列 是 的子序列,而 不是。
如果一个序列既是 的子序列,也是 的子序列,那么它就是 和 的公共子序列。所有公共子序列中,长度最大的称为最长公共子序列(LCS)。
你只需要输出最长公共子序列的长度,不需要输出具体的子序列。如果两个序列没有相同的元素,则答案为 。
输入格式
第一行包含两个整数 ,分别表示序列 和序列 的长度。
第二行包含 个整数 ,依次表示序列 中的元素。
第三行包含 个整数 ,依次表示序列 中的元素。
同一行内的相邻整数之间用一个空格分隔。
输出格式
输出一行一个整数,表示序列 和序列 的最长公共子序列的长度。
7 6
1 3 4 1 2 8 5
3 4 1 2 1 5
5
3 4
1 2 3
4 5 6 7
0
提示
样例 1 解释
序列 是两个序列的一个公共子序列:
- 在序列 中,可以依次选择第 个元素。
- 在序列 中,可以依次选择第 个元素。 这个公共子序列的长度为 。可以证明这是它们的最长公共子序列。
样例 2 解释
两个序列没有相同的元素,因此最长公共子序列的长度为 。
数据范围
对于 的数据,;
对于 的数据,;
对于 的数据,;
对于所有测试数据,,,同一个序列中可以出现重复的元素。