• 最长公共子序列dp入门


    #include <iostream>
    #include <string>
    #include <string.h>
    #include <vector>
    #include <time.h>
    using namespace std;
    char a[110],b[110];
    int dp[110][110];
    int maxn(int x,int y)
    {
        if(x>=y)
            return x;
        return y;
    }
    int main()
    {
        int lena,lenb,i,j;
        while(scanf("%s%s",a,b)!=EOF)
        {
            lena=strlen(a);
            lenb=strlen(b);
            memset(dp,0,sizeof(dp));
            for(i=1;i<=lena;i++)
                for(j=1;j<=lenb;j++)
                {
                    if(a[i-1]==b[j-1])
                        dp[j][i]=dp[j-1][i-1]+1;
                    else
                        dp[j][i]=maxn(dp[j-1][i],dp[j][i-1]);
                }
            printf("%d
    ",dp[lenb][lena]);
        }
        return 0;
    }
  • 相关阅读:
    ARC 080
    CodeForces
    [Lydsy1806月赛] 路径统计
    AGC 022 C
    AGC 022 B
    AGC 020 B
    UVA
    AGC 018 A
    python
    python
  • 原文地址:https://www.cnblogs.com/zhmlzhml/p/13378100.html
Copyright © 2020-2023  润新知