计蒜客习题:最长公共子序列
题目
样例
代码
#include<iostream>
using namespace std;
int dp[1010][1010],l1,l2;
string s1,s2;
int main()
{
getline(cin,s1);
getline(cin,s2);
l1=s1.size();
l2=s2.size();
for(int i=l1;i>=1;i--)
s1[i]=s1[i-1];
for(int i=l2;i>=1;i--)
s2[i]=s2[i-1];
for(int i=1;i<=l1;i++)
for(int j=1;j<=l2;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[l1][l2];
return 0;
}