您的位置:首页 > 编程语言 > C语言/C++

poj-2806-公共子序列-C语言-动态规划

2017-07-26 09:20 459 查看
状态为两个字符串所比较的位数,值是比较部分已有的公共子序列的长度。

/*****************************************
**文件名:poj-2806
**Copyright (c) 2010-2020 OrdinaryCrazy
**创建人:OrdinaryCrazy
**日期:20170726
**描述:poj-2806参考答案
**版本;1.0
*****************************************/

#include <stdio.h>
#include <string.h>
#define LENGTH 210
short maxlen[LENGTH][LENGTH];//记录状态对应值的二维数组
int main()
{
char s1[LENGTH],s2[LENGTH];
while(scanf("%s%s",s1+1,s2+1)==2)
{
short len1=strlen(s1+1),len2=strlen(s2+1),i,j;
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(s1[i]==s2[j])
maxlen[i][j]=maxlen[i-1][j-1]+1;
else
maxlen[i][j]=( maxlen[i-1][j]>maxlen[i][j-1] ? maxlen[i-1][j] : maxlen[i][j-1] );
}
}
printf("%d\n",maxlen[len1][len2]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: