最长公共子序列

Posted WayToAccept

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长公共子序列相关的知识,希望对你有一定的参考价值。

状态转移方程

1.if i=0 || j=0         arr[i][j]=0

2.if  str1[i]==str2[j]         arr[i][j]=arr[i-1][j-1]+1 (左上角+1)

3.if  str1[i]!=str2[j]          arr[i][j]=max(arr[i][j-1],arr[i-1][j])     (左边或上边)


下边程序偏移1位

int arr[1001][1001]=0;
int maxStrLen(string s,string t)

    int maxv=-1;
    for(int i=0;i<s.size();i++)
    
        for(int j=0;j<t.size();j++)
        
            if(s[i]==t[j])
            
                arr[i+1][j+1]=arr[i][j]+1;
            
            else
            
                arr[i+1][j+1]=arr[i][j+1]>arr[i+1][j]?arr[i][j+1]:arr[i+1][j];
            
            if(maxv<arr[i+1][j+1])maxv=arr[i+1][j+1];
        
    
    return maxv;


以上是关于最长公共子序列的主要内容,如果未能解决你的问题,请参考以下文章

最长公共子串+最长公共子序列

最长公共子序列LCS

MATLAB 最长公共子序列

动态规划 最长公共子序列 过程图解

最长公共子串和最长公共子序列

C语言实现最长公共子串与最长公共子序列