给定两个字符串strA[]=“ abfcab",strB[]=" abcfbc",求最长公共子序列。
图解:
最长公共子序列=4;
状态转移方程:
dp[0][0]=0;
int lenA=strlen(strA+1);
int lenB=strlen(strB+1);
for(int i=1;i<=lenA;i++)
{
for(int j=1;j<=lenB;j++)
{
if(strA[i]==strB[j])//两个字母相同
dp[i][j]=dp[i-1][j-1]+1;
else//两个字母不同
dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
}
}