注册 登录
编程论坛 C++教室

最长公共子序列

欣飞飞 发布于 2014-04-12 15:52, 444 次点击
谁能跟我说说LCS的思想啊!!我只知道dp公式
int LCS(char a[],char b[])
{
 int i,j,len1,len2;
 len1=(int)strlen(a);
 len2=(int)strlen(b);
 for(i=1;i<=len1;i++)
  for(j=1;j<=len2;j++)
  {
   if(a[i-1]==b[j-1])
    f[i][j]=f[i-1][j-1]+1;  
   else
    f[i][j]=max(f[i-1][j],f[i][j-1]);
  }
 return f[len1][len2];
}
看上去有点稀里糊涂的!!
f[i][j]=f[i-1][j-1]+1;  
 f[i][j]=max(f[i-1][j],f[i][j-1]);
只需这两句个我解释一下就可以了,主要是为什么要这样我不清楚!!
0 回复
1