| 题目名称 | 2629. 最长公共子序列 |
|---|---|
| 输入输出 | lcs.in/out |
| 难度等级 | ★★ |
| 时间限制 | 1000 ms (1 s) |
| 内存限制 | 512 MiB |
| 测试数据 | 10 |
| 题目来源 |
|
| 开放分组 | 全部用户 |
| 提交状态 | |
| 分类标签 | |
| 分享题解 |
| 通过:4, 提交:6, 通过率:66.67% | ||||
|
|
100 | 0.332 s | 24.01 MiB | C++ |
|
|
100 | 0.343 s | 23.98 MiB | C++ |
|
|
100 | 0.343 s | 24.01 MiB | C++ |
|
|
100 | 0.346 s | 23.99 MiB | C++ |
|
|
0 | 0.097 s | 3.61 MiB | C++ |
|
|
0 | 6.000 s | 24.02 MiB | C++ |
| 关于 最长公共子序列 的近10条评论(全部评论) |
|---|
给定长度为$m$的序列$a=\{a_1,a_2,\cdots,a_m\}$和长度为$n$的序列$b=\{b_1, b_2, \cdots, b_n\}$,若有一个序列$c=\{c_1, c_2,\cdots,c_k\}$既是$a$的子序列也是$b$的子序列,则称序列$c$为$a$和$b$的公共子序列。
例如:对于两个序列$a=\{1,2,3,2,4,1,2\}$和$b=\{2,4,3,1,2,1\}$,序列$\{2,3,1\}$是$a$和$b$的一个公共子序列,序列$\{2,3,2,1\}$也是$a$和$b$的一个公共子序列。
在这些公共子序列中,找到最长的一个,这就是最长公共子序列问题(Longest Common Subsequence, LCS)。
第一行两个整数$m,n(m,n\leq 3000)$,分别表示两个序列的长度。
第二行$m$个整数,表示第一个序列的元素。
第三行$n$个整数,表示第二个序列的元素。
一行一个整数,表示最长公共子序列长度。
7 6 1 2 3 2 4 1 2 2 4 3 1 2 1
4
子序列2 3 2 1、2 4 1 2、2 4 2 1等都是最长公共子序列。