最长公共子串(LCS)模板

#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
using namespace std;

char s1[1000],s2[1000];
int dp[1000][1000];
int main()
{
    while (~scanf("%s %s",s1+1,s2+1))
    {
        int len1 = strlen(s1+1);
        int len2 = strlen(s2+1);
        int ans = 0;
        for (int i = 1;i <= len1; i++)
          for (int j = 1;j <= len2; j++)
          {
              if (s1[i] == s2[j])
              {
                  dp[i][j] = dp[i-1][j-1]+1;
                  ans = max(ans,dp[i][j]);
              }

          }
        printf("%d\n",ans);
        memset(dp,0,sizeof(dp));
        memset(s1,0,sizeof(s1));
        memset(s2,0,sizeof(s2));
    }
}

猜你喜欢

转载自blog.csdn.net/sugarbliss/article/details/80731688