版权声明:转载请附上原文链接哟! 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;
}