您的位置:首页 > 其它

ZOJ1733 | | HDU1159简单的DP求两个字符串最大子序列的长度,没啥好说的,照着书上敲得。

2012-03-21 21:41 357 查看
View Code

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 1000

int c[MAX][MAX],len1,len2;
char x[MAX],y[MAX];
void LCSLength(int m,int n,char *x,char *y)
{
int i,j;
for(i=0; i<m; i++)
c[i][0] = 0;
for(i=0; i<n; i++)
c[0][i] = 0;
for(i=0; i<m; i++)
for(j=0; j<n; j++)
{
if(x[i] == y[j])
{
c[i+1][j+1] = c[i][j] + 1;
}
else if(c[i][j+1] >= c[i+1][j])
{
c[i+1][j+1] = c[i][j+1];
}
else
{
c[i+1][j+1] = c[i+1][j];
}
}
}

int main()
{

while(scanf("%s%s",x,y) != EOF )
{
getchar();
len1 = strlen(x);
len2 = strlen(y);
LCSLength(len1,len2,x,y);
printf("%d\n",c[len1][len2]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐