Common Subsequence

Posted _LinesYao

tags:

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

题意:两个字符串a,b的最长公共子序列长度。

思路:f[i][j]表示a串到第i位,b串到第j位的最长公共子序列长度。

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
using namespace std;
int f[1010][1010];
int main() {
    string a,b;
    while(cin>>a>>b) {
        int alen=a.size();
        int blen=b.size();
        memset(f,0,sizeof f);
        for(int i=1;i<=alen;i++) {
            for(int j=1;j<=blen;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]);
                }
            }
        }
        printf("%d\\n",f[alen][blen]);
    }
    return 0;
}

 

以上是关于Common Subsequence的主要内容,如果未能解决你的问题,请参考以下文章

poj 1458 Common Subsequence ——(LCS)

POJ 1458 - Common Subsequence(最长公共子串)

动态规划 ---- 最长公共子序列(Longest Common Subsequence, LCS)

1143. Longest Common Subsequence

1143. Longest Common Subsequence

LeetCode 1143. Longest Common Subsequence