最长公共子序列
动态规划
C++
公开
最长公共子序列.cpp
#include<bits/stdc++.h>
using namespace std;
int dp[1001][1001];
int main()
{
string s1,s2;
cin>>s1>>s2;
int m=s1.size();
int n=s2.size();
s1="#"+s1;
s2="#"+s2;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(s1[i]==s2[j]) dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
cout<<dp[m][n];
return 0;
}