最长公共子序列(LCS)(一)---动态规划
2017-09-19 22:45
232 查看
利用动态规划算法实现最长公共子序列:
运行结果:
#include <iostream> #include <string> #include <csetjmp> using namespace std; int max(int a, int b){ return a > b ? a : b; } int LCS(string& s1, string&s2){ int s1_len = s1.length(); int s2_len = s2.length(); int**p; p = new int*[s1_len+1]; for (int i = 0; i < s1_len+1; i++){ p[i] = new int[s2_len+1]; } for (int i = 0; i < s1_len+1; i++){ for (int j = 0; j < s2_len+1; j++){ if (i == 0 || j == 0){ p[i][j] = 0; } else{ if (s1.at(i - 1) == s2.at(j - 1)){ p[i][j] = p[i - 1][j - 1] + 1; } else{ p[i][j] = max(p[i - 1][j], p[i][j - 1]); } } } } int k = p[s1_len][s2_len]; for (int i = 0; i < s1_len; i++){ delete[] p[i]; } delete[] p; return k; } int main(){ string s = "ATGTCTATTCTGTC"; string s2 = "AGTCATCTGTC"; int z = LCS(s, s2); cout << z << endl; return 0; }
运行结果:
相关文章推荐
- 51Nod- 1006 最长公共子序列Lcs(动态规划)
- 最长公共子序列(LCS)问题--动态规划
- LCS最长公共子序列――动态规划
- 动态规划之最长公共子序列(LCS)
- Dynamic Programming longest common subsequence(LCS) 动态规划之最长公共子序列
- LCS(最长公共子序列)和dp(动态规划)
- LCS问题(最长公共子序列)-动态规划实现
- 用动态规划的方法解决LCS(最长公共子序列)的问题
- 算法导论-----最长公共子序列LCS(动态规划)
- 【算法导论实验4】动态规划-最长公共子序列LCS
- 自顶向下动态规划解决最长公共子序列(LCS)问题
- LCS问题(最长公共子序列)-动态规划实现
- LCS算法[动态规划 最长公共子序列]求回文串
- L - Common Subsequence POJ 1458 (动态规划,LCS 最长公共子序列 )
- 最长公共子序列问题(LCS) - 动态规划
- LCS问题(最长公共子序列)-动态规划实现
- 动态规划解最长公共子序列(LCS)问题 (附可打印LCS完整代码)
- 0011算法笔记——【动态规划】最长公共子序列问题(LCS)
- 动态规划求最长公共子序列LCS
- 【51NOD】1006 最长公共子序列Lcs(动态规划)