目录
1.最长公共子序列
题目描述
给定一个长度为 N 数组 a 和一个长度为 M 的数组 b。
请你求出它们的最长公共子序列长度为多少。
最长公共子序列(Longest Common Subsequence,LCS):一个给定序列的子序列,是在该序列中删去若干元素后得到的序列。例如:X = {A, B, C, B, D, A, B},它的子序列有{A, B, C, B, A}、{A, B, D}、{B, C, D, B}等。子序列和子串是不同的概念,子串的元素在原序列中是连续的。
给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。最长公共子序列是长度最长的子序列。
输入描述
输入第一行包含两个整数 N,M,分别表示数组 a 和 b 的长度。
第二行包含 N 个整数a1,a2,...,an。
第三行包含 M 个整数 b1,b2,...,bn。
1≤N,M≤103,1≤ai,bi≤10^9。
输出描述
输出一行整数表示答案。
样例输入
5 6 1 2 3 4 5 2 3 2 1 4 5
样例输出
4
- 当 ai=bj 时,已求得