文档介绍:(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);}:以上算法表明可以正确的找出两个序列的最长公共子序列,达到了本次实验的目的.