最长公共子序列(Longest Common Subsequence )问题:给定两个序列,找出两个序列中存在的最长子序列的长度。 子序列是以相同的相对顺序出现,但不一定是连续的序列。 例如,“ abc”,“ abg”,“ bdf”,“ aeg”,“ acefg”等是“ abcdefg”的子序列。
例如:
序列“ABCDGH” 和“AEDFHR”的最长公共子序列是“ADH”长度为3。
序列 “AGGTAB”和“GXTXAYB”的最长公共子序列是 “GTAB”长度为4。
这个问题的朴素的解决方案是生成两个给定序列的所有子序列,并找到最长的匹配子序列。 该解决方案在时间复杂度方面是指数的。我们考虑一下采用暴力解法的时间复杂度,长度为n的字符串的子序列一共有 C n 0 + C n 1 + . . . + C n n − 1 C_{n}^{0}+C_{n}^{1}+...+C_{n}^{n-1} Cn0+Cn1
最长公共子序列(Longest Common Subsequence)-- 动态规划
最新推荐文章于 2025-03-06 23:30:00 发布