最大公共子串长度问题就是: 求两个串的所有子串中能够匹配上的最大长度是多少。
比如:"abcdkkk" 和 "baabcdadabc", 可以找到的最长的公共子串是"abcd",所以最大公共子串长度为 4。
#include <iostream>
#define db double
using namespace std;
const int N = 1e4,M = 2000;
int dp[N][N];
int main(){
string s1,s2;
cin>>s1>>s2;
dp[0][0]=0;
int mx=0;
int l1=s1.length()-1;
int l2=s2.length()-1;
for(int i=1;i<=l1;i++){
for(int j=1;j<=l2;j++){
if(s1[i-1]==s2[j-1]){
dp[i][j]=dp[i-1][j-1]+1;
mx=max(mx,dp[i][j]);
}else{
dp[i][j]=0;
}
}
}
cout<<mx<<endl;
//abcdkk baabcdabc
}