C++ 代码
#include<bits/stdc++.h>
using namespace std;
string x,y;
int dp[10001][2001];
int n,m;
int main(){
cin >>n >>m;//事实证明我输入的n和m只出现了这一次
cin >> x >>y;
x=' '+x;
y=' '+y;//ABCBDAB对应的下标是1234567,少了0,在前面补空格
for(int i=1;i<=x.size();i++){
for(int j=1;j<=y.size();j++){
if(x[i]==y[j]){
dp[i+1][j+1] = dp[i][j]+1;
}else{
dp[i+1][j+1] = max(dp[i+1][j],dp[i][j+1]);
}
}
}
cout << dp[x.size()][y.size()];
return 0;
}