//Accepted 4112 KB 16 ms //最长公共子串 #include <cstdio> #include <cstring> #include <iostream> using namespace std; ; int dp[imax_n][imax_n]; char s1[imax_n]; char s2[imax_n]; int len1,len2; int max(int a,int b) { return a>b?a:b; } void Dp() { memset(dp,,sizeof(dp)); ;i<=len1;i++) { ;j<=len2;j++) { dp[i][j]=max(dp[i-][j],dp[i][j-]); ]==s2[j-]) dp[i][j]=max(dp[i][j],dp[i-][j-]+); } } printf("%d\n",dp[len1][len2]); } int main() { while (scanf("%s%s",s1,s2)!=EOF) { len1=strlen(s1); len2=strlen(s2); Dp(); } ; }