心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
最近练习动态规划,很经典的一个问题,也很基础。
以下是我的代码:
#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 阅读(621) 评论(0)  编辑 收藏 引用 所属分类: 题目分类:动态规划

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理