10.最长公共子序列

10.最长公共子序列_第1张图片

如果s[n-1]=t[m-1],sn与tm的最长公共子序列问题就转换成了求sn-1与tm-1的最长公共子序列

如果s[n-1]!=t[m-1],sn与tm的最长公共子序列问题就转换成了求sn与tm-1,sn-1与tm的最长公共子序列

状态转移方程:

如果s[i]=t[j],dp[i][j]=dp[i-1][j-1]+1

如果s[i]!=t[j],dp[i][j]=max(dp[i][j-1],dp[i-1][j])

代码:

#include
using namespace std;
int n=4;
int m=4;
char s[5]="abcd";
char t[5]="becd";
int dp[10][10]; //dp[i][j]表示s1-si和t1-tj对应的LCS长度
int main()
{
    memset(dp,0,sizeof(dp));
    for(int i=0;i

 

你可能感兴趣的:(题目)