1 / 2
文档名称:

最长公共子序列(LCS)算法实验.doc

格式:doc   大小:43KB   页数:2页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

最长公共子序列(LCS)算法实验.doc

上传人:762357237 2019/2/25 文件大小:43 KB

下载得到文件列表

最长公共子序列(LCS)算法实验.doc

相关文档

文档介绍

文档介绍:(LCS),如果序列C既是A的子序列,又是B的子序列,则称C是A和B的公共子序列,A和B的公共子序列可能不止一个,其中最长的那个序列称为公共子序列。公共子序列在很多实际应用中起关键作用。序列A={abdledefiess},B={abwdifgdefiesa},最长公共子序列为C={defies}:int**lcs_length(charp[],charq[],int**c,int**k,intm,intn){ inti,j; for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { if(p[i-1]==q[j-1])//如果两个字母相等的情况{ c[i][j]=c[i-1][j-1]+1;k[i][j]=1; } else { if(c[i-1][j]>=c[i][j-1])//两字母不等情况1 { c[i][j]=c[i-1][j]; k[i][j]=2; } else//两字母不等情况2 { c[i][j]=c[i][j-1]; k[i][j]=3; } } } } returnc,k;}输出代码voidprint_lcs(int**k,charp[],inti,intj){ if(i==0||j==0) return; if(k[i][j]==1) { print_lcs(k,p,i-1,j-1);//通过递归的方法按照输入的从头到尾的顺序输出LCS cout<<p[i-1]; } elseif(k[i][j]==2) print_lcs(k,p,i-1,j); else print_lcs(k,p,i,j-1);}:以上算法表明可以正确的找出两个序列的最长公共子序列,达到了本次实验的目的.