最近练习动态规划,很经典的一个问题,也很基础。
以下是我的代码:
#include<stdio.h>
#include<string.h>
#define maxn 1007
#define max(a,b) (a>b?a:b)
char a[maxn],b[maxn];
long lena,lenb,d[maxn][maxn];
int main()
{
while(gets(a)&&gets(b))
{
lena=strlen(a);
lenb=strlen(b);
memset(d,0,sizeof(d));
for(long i=1;i<=lena;i++)
for(long j=1;j<=lenb;j++)
{
d[i][j]=max(d[i-1][j],d[i][j-1]);
if(a[i-1]==b[j-1])
d[i][j]=max(d[i][j],d[i-1][j-1]+1);
}
printf("%ld\n",d[lena][lenb]);
}
return 0;
}
posted on 2010-03-01 19:12
lee1r 阅读(626)
评论(0) 编辑 收藏 引用 所属分类:
题目分类:动态规划