求两个字符串的最长公共子序列
2013-09-23 23:31
399 查看
// 求两个字符串的最长公共子序列.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include<iostream> #include<string> #define N 10 using namespace std; void longest(string s1,string s2) { int i,j; int a ; for(i=0;i<s1.size();i++) for(j=0;j<s2.size();j++) a[i][j]=0; for (j=0;j<s2.size();j++) if (s1[0]==s2[j]) a[0][j]=1; for (i=0;i<s1.size();i++) if (s1[i]==s2[0]) a[i][0]=1; int max=a[0][0]; int temp=0; for(i=1;i < s1.size();i++) for(j=1;j < s2.size();j++) if(s1[i]==s2[j]) { a[i][j]=a[i-1][j-1]+1; if(max<a[i][j]) { max=a[i][j]; temp=i; } } if(max==0) { cout<<"没有公共子序列!"; } else { cout<<"两个字符串的最长公共子序列为:"; for(i=temp-max+1;i<=temp;i++) cout<<s1[i]; cout<<endl; } } int main() { string s1,s2; cout<<"请输入两个字符串:"<<endl; cout<<"一个字符串为:"; cin>>s1; cout<<"另一个字符串为:"; cin>>s2; longest(s1,s2); cout<<endl; system("pause"); return 0; }
相关文章推荐
- 两个字符串的最长公共子序列的长度
- dp---两个字符串最长公共子序列
- 用动态规划找到两个字符串的最长公共子序列
- 求两个字符串的最长公共子序列
- 求两个字符串的最长公共子序列的长度(动态规划)
- 求两个字符串的最长公共子序列 阿里在线笔试题
- 求两个字符串最长公共子序列的算法优化(C++实现)
- POJ 2774 两个字符串的最长公共子序列。
- 每日一题(86) - 计算两个字符串的最长公共子序列(LCS)
- 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符
- 找两个字符串的最长公共子序列的长度
- 求两个字符串的最长公共子序列的数量
- 动态规划求两个字符串的连续最长公共子序列
- 编程之美3.3——类似——两个字符串的最长公共子序列(LCS)
- JAVA代码—算法基础:求两个字符串的最长公共子序列问题
- 比较两个字符串的最长公共子序列的长度,字符不区分大小写
- 求解两个字符串的最长公共子序列
- 求两个字符串的最长公共子序列——Java实现
- poj1458Common Subsequence(求两个字符串的最长公共子序列)
- 百度2015测试开发面试:两个字符串的最长公共子序列