#include<iostream>
using namespace std;
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 1010
int dp[N][N];
int main ()
{
char s1[N],s2[N];
while(gets(s1),gets(s2))
{
int len1 = strlen(s1);
int len2 = strlen(s2);
for(int i = 1; i <= len1; i++ )
dp[i][0] = 0;
for(int i = 1; i <= len2; i++ )
dp[0][i] = 0;
for(int i = 1; i <= len1; i++ )
{
for(int j = 1; j <= len2; j++ )
if(s1[i-1] == s2[j-1] )
dp[i][j] = dp[i-1][j-1]+1;
else
// dp[i][j] = max(dp[i-1][j-1],dp[i-1][j],dp[i][j-1]);
dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
}
printf("%d\n",dp[len1][len2]);
memset(s1,'\0',sizeof(s1));
memset(s1,'\0',sizeof(s2));
memset(dp,0,sizeof(dp));
}
return 0;
}
B题 最长公共子序列
最新推荐文章于 2024-08-23 20:07:50 发布