SDUTOJ 2080 最长公共子序列问题(LCS)

来源:互联网 发布:pvc地板知乎 编辑:程序博客网 时间:2024/06/06 14:20

题目描述

 给定两个序列X=

输入

输入数据有多组,每组有两行 ,每行为一个长度不超过500的字符串(输入全是大写英文字母(A,Z)),表示序列X和Y。

输出

每组输出一行,表示所求得的最长公共子序列的长度,若不存在公共子序列,则输出0。

示例输入

ABCBDABBDCABA

示例输出

4




#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<cmath>#define LL long long#define inf 0x3f3f3f3fusing namespace std;char  a[600],b[600];int dp[600][600];int main(){    int n,m,x,k,i,j;    while(gets(a)!=NULL)    {        gets(b);        n=strlen(a);        m=strlen(b);        memset(dp,0,sizeof(dp));        for(i=1;i<=n;i++)        {            for(j=1;j<=m;j++)            {                if(a[i-1]==b[j-1])                {                    dp[i][j]=dp[i-1][j-1]+1;                }                else                {                    dp[i][j]=max(dp[i-1][j],dp[i][j-1]);                }            }        }        printf("%d\n",dp[n][m]);    }    return 0;}

0 0
原创粉丝点击