LintCode 最长公共子序列
来源:互联网 发布:数据分析ppt图片 编辑:程序博客网 时间:2024/05/22 17:04
给出两个字符串,找到最长公共子序列(LCS),返回LCS的长度。
最长公共子序列的定义:
- 最长公共子序列问题是在一组序列(通常2个)中找到最长公共子序列(注意:不同于子串,LCS不需要是连续的子串)。该问题是典型的计算机科学问题,是文件差异比较程序的基础,在生物信息学中也有所应用。
- https://en.wikipedia.org/wiki/Longest_common_subsequence_problem
思路:
经典的字符串动态规划,记录一下加深理解。
class Solution {public: /** * @param A, B: Two strings. * @return: The length of longest common subsequence of A and B. */ int longestCommonSubsequence(string A, string B) { // write your code here /** * 动态规划 * 状态 * dp[i][j] 表示以 A[i] B[j] 为结束点的最长公告子序列长度 * 转移 * 若 A[i] == B[j] 则 dp[i][j] = dp[i - 1][j - 1] + 1 * 若 A[i] != B[j] 则 dp[i][j] = max(dp[i - 1][j] dp[i][j - 1]) * */ int** arr = new int*[A.size() + 1]; for(int i = 0; i <= A.size(); ++i) arr[i] = new int[B.size() + 1](); for(int i = 0; i < A.size(); ++i) { for(int j = 0; j < B.size(); ++j) { if(A[i] == B[j]) { arr[i + 1][j + 1] = arr[i][j] + 1; }else { arr[i + 1][j + 1] = max(arr[i][j + 1], arr[i + 1][j]); } } } return arr[A.size()][B.size()]; }};
0 0
- LintCode : 最长公共子序列
- LintCode 最长公共子序列
- 最长公共子序列-LintCode
- lintcode--最长公共子序列
- lintcode-最长公共子序列-77
- LintCode 77 最长公共子序列
- [LintCode] 最长公共子序列 Longest Common Subsequence
- lintcode longest-common-subsequence 最长公共子序列 证明
- [Lintcode]Longest Common Subsequence 最长公共子序列
- LintCode-最长公共子串
- LintCode 最长公共子串
- LintCode : 最长公共子串
- LintCode : 最长公共子串
- LintCode 最长公共子串
- 最长公共子串-LintCode
- lintcode -- 最长公共子串
- 最长公共子序列
- 最长公共子序列
- iOS
- retrofit 上传文件, 新方式 传的是数组 或者文件
- Windows02.写一个窗口
- 正确的mysql写入语句要指定字段
- Python 获取命令行参数
- LintCode 最长公共子序列
- 如何在apache官网下载旧版本的maven
- JS访问器(getter和setter)
- 【Leetcode】two sum
- MySql常用语句汇总 --持续更新
- android6.0 源码 系统应用之Music代码之类逻辑分析
- 网络寻路(深搜)
- Hibernate关联映射,级联(cascade),抓取策略(fetch)
- ubuntu的中文网站