HDU 1159

题意:两个字符串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
",f[alen][blen]);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/LinesYao/p/5506558.html