寻找两个串的最长公共子序列
2016-04-16 10:57
441 查看
思路:
较短串从前向后比较
较长串从后往前比较
代码实现:
结果如下图:
较短串从前向后比较
较长串从后往前比较
代码实现:
#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; }
结果如下图:
相关文章推荐
- linux安全第八周总结
- s3c2440启动过程详解
- 从容器和Kubernetes技术看现代云计算的发展轨迹
- Android ORM 框架之 greenDAO 使用心得
- 1014. Waiting in Line
- 基于sklearn 的auc 计算方法
- 后Angular时代二三事
- java之Secure communication terminology
- Windows安装Mysql
- LeetCode 150. Evaluate Reverse Polish Notation
- 三元联系简单介绍
- 我对XCode Objective-c Cocoa的简单理解
- numpy mean()用法
- 微服务熔断与隔离
- FZU Moon Game(几何)
- LeetCode——021
- Jenkins常用插件之MSBuild Plugin
- FZU Moon Game(几何)
- MapReduce实例-NASA博客数据频度简单分析
- JAVA第五次作业