简单的动态规划!
&*&*&*&&&&&&&&&&******************&&&&&&&&&&&&
题意:给你两个字符串,求出这两个字符串的最长公共子序列的长度!
??????????????????????????
#include<stdio.h>
#include<string.h>#define N 1000
#define max(a,b) a>b?a:b
int maxlen[N][N];
char a[N],b[N];
int len1,len2;
int main()
{
int i,j;
while(scanf("%s%s",a+1,b+1)!=EOF)
{
len1=strlen(a+1);
len2=strlen(b+1);
for(i=0;i<len1;i++)
maxlen[i][0]=0;
for(j=0;j<len2;j++)
maxlen[0][j]=0;
for(i=1;i<=len1;i++)
for(j=1;j<=len2;j++)
if(a[i]==b[j])
maxlen[i][j]=maxlen[i-1][j-1]+1;
else
maxlen[i][j]=max(maxlen[i-1][j],maxlen[i][j-1]);
printf("%d\n",maxlen[len1][len2]);
}
return 0;
}
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159