题解:最长公共子串。题意就不说了。为何 a[0]='#',b[0]='# 不加就不过呢- -。。' 为何。
#include<cstdlib>
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include <ext/hash_map>
using namespace std;
#define LL long long
#define maxn 100003
char a[1005],b[1005];
int dp[1005][1005];
int main()
{
a[0]='#',b[0]='#';
while(cin>>a+1>>b+1)
{
int lenA,lenB;
lenA=strlen(a)-1;
lenB=strlen(b)-1;
memset(dp,0,sizeof(dp));
int t=0;
for(int i=1;i<=lenA;i++)
for(int j=1;j<=lenB;j++)
{
if(a[i]==b[j])
dp[i][j]=dp[i-1][j-1]+1;
else
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
if(t<dp[i][j])
t=dp[i][j];
}
cout<<t<<endl;
}
}