A 不开long long 毁一生
最长公共子序列
int dp[1050][1050];
int main(){
string s1,s2;
cin>>s1>>s2;
for(int i=0;i<s1.length();i++){
for(int j=0;j<s2.length();j++){
if(i>0) dp[i][j]=dp[i-1][j];
if(s1[i]==s2[j]){
if(i>0&&j>0) dp[i][j]=max(dp[i][j],dp[i-1][j-1]+1);
else dp[i][j]=1;
}
if(j>0) dp[i][j]=max(dp[i][j],dp[i][j-1]);
}
}
cout<<dp[s1.length()-1][s2.length()-1];
return 0;
}