//LCS算法,最长公共子序列 来自《算法导论》
#include<iostream>
#include<cstdlib>
#include<cmath>
#define N 105
char s[N+1][N+1];
using namespace std;
int LCS( const char*s1,const char*s2){
int m = strlen(s1);
int n = strlen(s2);
int i,j;
s[0][0]=0;
for( i = 0;i <= m;i++){
s[i][0]=0;
}
for( j = 0;j <= n;j++){
s[0][j]=0;
}
for( i = 1;i <= m;i++){
for( j = 1;j <= n;j++){
if(s1[i]==s2[j]){
s[i][j]=s[i-1][j-1]+1;
}
else if(s[i-1][j]>s[i][j-1]){
s[i][j]=s[i-1][j];
}
else {
s[i][j]=s[i][j-1];
}
}
}
return s[m][n];
}
int main(){
char s1[N],s2[N];
while( cin >> s1 >> s2){
cout << LCS(s1,s2) << endl;
}
system("pause");
}
分享到:
相关推荐
求两个字符串序列的最长公共子序列,利用动态规划求出最优解。
最长公共子序列(Longest Common Subsequence,简称LCS)是计算机科学中,尤其是在字符串处理、算法设计和分析领域的一个经典问题。这个问题的基本目标是找到两个字符串的最长子序列,这个子序列不需要连续,但必须...
最长公共子序列(Longest Common Subsequence,LCS)算法是一种经典的计算机科学问题,主要应用于比较和分析两个或多个序列的相似性。在文本编辑、生物信息学、数据挖掘等领域有着广泛的应用。LCS问题的基本目标是...
最长公共子序列问题LCS 最长公共子序列问题(Longest Common Subsequence,LCS)是计算机科学中一个经典的问题,它是指给定两个序列X和Y,找出它们的最长公共子序列。该问题具有重要的理论和实际意义,在很多领域都...
本次实验的目标是设计并实现一个算法,用于找出任意两个给定序列X和Y的最长公共子序列LCS。 #### 实验步骤 1. **查找公共子序列:** - 首先定义两个序列A和B,比如A={abdledefiess}和B={abwdifgdefiesa}。 - ...
使用c++语言编写的LCS问题的求解过程
最长公共子序列(Longest Common Subsequence,LCS)是一个经典的计算机科学问题,涉及序列比较和算法设计。在本实验报告中,我们将深入探讨如何利用动态规划方法解决这一问题。 首先,LCS问题旨在找到两个给定序列...
实现了求最长公共子序列的算法,内容简单易懂,代码也很短
最长公共子序列(Longest Common Subsequence,LCS)算法是一种经典的计算机科学问题,主要应用于比较和分析两个或多个序列的相似性。在文本编辑、生物信息学、数据挖掘等领域有着广泛的应用。LCS的基本思想是寻找两...
最长公共子序列(Longest Common Subsequence,LCS)是一个经典的计算机科学问题,它涉及到序列比对和字符串处理。在两个或多个序列中,LCS是指没有改变原有顺序的情况下,存在于所有序列中的最长子序列。这个问题在...
实验报告的主题是“算法设计与分析”,关注的是使用动态规划解决最长公共子序列(Longest Common Subsequence, LCS)的问题。动态规划是一种有效的方法,它适用于具有最优子结构和子问题重叠性质的问题。在本实验中...
最长公共子序列(Longest Common Subsequence,简称LCS)问题属于计算机科学领域中的一个重要问题,尤其是在算法设计与分析方面。此问题的核心在于寻找两个序列的最长公共子序列。其中,“子序列”指的是在原序列中...
最长公共子序列(Longest Common Subsequence,LCS)是计算机科学中一种经典的字符串问题,主要涉及算法设计和分析。它的目标是找到两个给定序列(通常为字符串)的最长子序列,该子序列在原序列中不需连续,但必须...
在深入解析给定代码之前,我们先来了解一下“最长公共子序列”(Longest Common Subsequence,简称LCS)的基本概念及其在计算机科学中的应用。LCS问题是一种典型的动态规划问题,广泛应用于生物信息学、文本编辑和...
问题的核心是找到两个序列 X 和 Y 的最长公共子序列(LCS),即在删除若干元素后,X 和 Y 都能变成的子序列。例如,序列 {B,C,D,B} 是 {A,B,C,B,D,A,B} 的子序列,通过下标 {2,3,5,7} 显示这种关系。最长公共子序列...
在讨论最长公共子序列(Longest Common Subsequence,简称LCS)问题时,通常会提及两种主要的算法实现方式:一种时间复杂度为O(n^2),另一种则通过优化达到O(nlogn)的时间复杂度。下面我们将详细介绍这两种算法。 *...
算法系列之六:最长公共子序列(LCS)问题(连续子序列)的三种解法 本文档总结了解决最长公共子序列(LCS)问题的三种解法,针对连续子序列的情况。LCS 问题有两种定义子序列的方式:一是子序列不要求连续,二是子...