#include <stdio.h>
#include <string.h>
#define maxn 1050
char a[maxn],b[maxn];
int dp[maxn][maxn];
int max(int x,int y)
{
return x > y ? x : y;
}
void solve(int x,int y)
{
int i,j;
//memset(dp,0,sizeof(dp));
for(i = 0; i < x ; i++)
dp[i][0] = 0;
for(i = 0; i < y ; i++)
dp[0][i] = 0;
for(i=0;i<x;i++)
for(j=0;j<y;j++)
{
if(a[i] == b[j])
{
dp[i+1][j+1] = dp[i][j] + 1;
}
else
{
dp[i+1][j+1] = max(dp[i][j+1],dp[i+1][j]);
}
}
printf("%d\n",dp[i][j]);
}
int main()
{
int len1,len2;
while(scanf("%s %s",a,b)==2)
{
//printf("%s %s\n",a,b);
len1=strlen(a);
len2=strlen(b);
solve(len1,len2);
}
}
Common Subsequence (dp)
最新推荐文章于 2020-10-08 17:57:19 发布