寻找两个串的最长公共子序列
来源:互联网 发布:泉州师范学院软件好吗 编辑:程序博客网 时间:2024/05/22 09:49
思路:
- 较短串从前向后比较
- 较长串从后往前比较
代码实现:
#include <iostream> #include <string> using namespace std; string str1="acbac"; string str2="acaccbabb"; int LCS_left; //最长子串的左边界int LCS_right; //最长子串的右边界int len[500]; int findmaxlength(string str1,string str2) { int max=0; for(int i=0;i<str1.length();i++) //较短串从前向后比较 { for(int j=str2.length()-1;j>=0;j--) // 较长串从后往前比较 { if(str1[i]==str2[j]) { if(j==0) { len[j]=1; } else { len[j]=(len[j-1]+1); } if(max<len[j]) { max=len[j]; LCS_right=j; //记录右边界 } } else len[j]=0; } } return max; } int main(){ int max_length= findmaxlength(str1,str2); int LCS_left=LCS_right-max_length+1; //计算左边界 cout<<max_length<<endl; cout<<"最长子序列为:"; for(int i=LCS_left;i<=LCS_right;i++) //打印最长子序列 { cout<<str2[i]<<" "; } system("pause"); return 0;}
结果如下图:
0 0
- 寻找两个串的最长公共子序列
- 两个字符串寻找最长公共子串
- 两个序列的最长公共子序列
- 最长公共子串序列一之两个字符串的最长公共子序列
- 两个字符串的最长公共子序列
- 最长公共子串序列一之 两个字符串的最长公共子串
- 求两个字符串的最长公共子串,最长公共子序列,编辑距离
- 两个串最长公共子序列的长度:
- 动态规划之寻找两个字符串最长公共子串
- 求出两个序列的最长公共子序列
- 利用矩阵求两个序列的最长公共子序列
- 求两个序列的最长公共子序列
- 寻找最长公共子串
- 最长公共子序列LCS 与最长公共子串 两个问题的动态规化 解法
- 最长公共子序列,最长公共子串,最长递增子序列的问题~
- 求两个字符串的最长的连续公共子串和求两个字符串的公共子序列
- 寻找两个字符串中最长的公共子串源码(不使用strcmp)
- 关于寻找两个字符串中最长子序列的问题
- Windows安装Mysql
- Android ORM 框架之 greenDAO 使用心得
- LeetCode 150. Evaluate Reverse Polish Notation
- s3c2440启动过程详解
- 安卓开发之<include /><merge /><viewstub />的使用
- 寻找两个串的最长公共子序列
- 深度优先搜索(DFS)
- 程序员的宝贵素质
- CSS小结
- Qt4.8.2 编译方法
- ZOJ 3715 Kindergarten Election
- activiti自定义流程之整合(六):获取我的申请任务
- AndroidStudio上面最好用的插件
- codeforces_660C. Hard Process(尺取法)