这个算法就不在解释了,看不懂的联系博主(qq3100310659)(备注:c++学习)不备注就不给通过
//动态规划-最长公共子序列
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a1,a2;
cin>>a1>>a2;
int x=a1.length();
int y=a2.length();
int dp[21][21];
for(int i=0;i<=x;i++)
dp[i][0]=0;
for(int j=0;j<=y;j++)
dp[0][j]=0;
for(int i=1;i<=x;i++)
for(int j=1;j<=y;j++)
if(a1[i-1]==a2[j-1])
dp[i][j]=dp[i-1][j-1]+1;
else
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
cout<<dp[x][y];
return 0;
}