题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159
解题思路:
基本的最长公共子序列,不懂的请看这个人的博客:http://www.cnblogs.com/xkfz007/archive/2012/10/17/2728728.html
AC代码:
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int dp[1010][1010];
int main()
{
string a,b;
while(cin>>a>>b)
{
int i,j,l1=a.size(),l2=b.size();
memset(dp,0,sizeof(dp));
for(i=1;i<=l1;i++)
{
for(j=1;j<=l2;j++)
{
if(a[i-1]==b[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[l1][l2]<<endl;;
}
return 0;
}