YTU 3136 动态规划基础题目之最长公共子序列

版权声明:转载请附上原文链接哟! https://blog.csdn.net/weixin_44170305/article/details/90056263

风华是一指流砂,苍老是一段年华。

题目描述

给出两个字符串,求出这样的一 个最长的公共子序列的长度:子序列 中的每个字符都能在两个原串中找到, 而且每个字符的先后顺序和原串中的 先后顺序一致。数据保证每个字符串均在100个以内。

输入

多组输入,一行输入两个字符串

输出

输出最长公共子序列。

样例输入

copy

abcfbc         abfcab
programming    contest 
abcd           mnp

样例输出

4
2
0

提示

abcfbc         abfcab最长的公共子序列为:abcb,所以输出4

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int max(int a,int b)
{
    return a>b?a:b;
}
int c[105][105];
int n,i,j,l1,l2;
char x[105],y[105];
int main()
{
    while(~scanf("%s%s",x,y))
    {
 
    l1=strlen(x);
    l2=strlen(y);
    for(i=1;i<=l1;i++)
        for(j=1;j<=l2;j++)
        if(x[i-1]==y[j-1])
        c[i][j]=c[i-1][j-1]+1;
    else
        c[i][j]=max(c[i-1][j],c[i][j-1]);
    printf("%d\n",c[l1][l2]);
        memset(c,0,sizeof(c));
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44170305/article/details/90056263