最长公共子序列 LCS (Updated On 20160819)
/// LCS 最长子序列
namespace LCS
{
const int MAXLEN_A = 512;
const int MAXLEN_B = 512;
int dp[MAXLEN_A][MAXLEN_B];
int deal(const char* a,const char* b)
{
int lena=strlen(a);
int lenb=strlen(b);
for(int i=0;i<=lenb;i++)
{
for(int j=0;j<=lena;j++)
{
if(i==0) dp[i][j]=0;
else if(j==0) dp[i][j]=0;
else if(b[i-1]==a[j-1])
{
dp[i][j]=dp[i-1][j-1]+1;
}
else
{
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
}
return dp[lenb][lena];
}
}//End of namespace LCS*之前的模板有BUG,现已去除。
本文详细介绍了一种求解最长公共子序列(LCS)问题的经典动态规划算法实现。该算法通过构建二维数组来记录两个字符串之间的最长公共子序列长度,并最终返回这个长度。文章提供了完整的C++代码实现。
624

被折叠的 条评论
为什么被折叠?



