#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
int f(char* x, char* y)
{
if(strlen(x)==0) return 0;
if(strlen(y)==0) return 0;
if(*x == *y)
{
//printf("%s\n",x+1);
return f(x+1, y+1) + 1;
}
return max(f(x+1,y),f(x,y+1));
}
int main()
{
printf("%d\n", f("ac","abcd")); //2
printf("%d\n", f("acebbcde1133","xya33bc11de")); //5
return 0;
}
一个串的子串是指该串的一个连续的局部。如果不要求连续,则可称为它的子序列。
比如对串: "abcdefg" 而言,"ab","abd","bdef" 等都是它的子序列。
特别地,一个串本身,以及空串也是它的子序列。
对两个串而言,可以有许多的共同的子序列,我们关心的是:它们所共同拥有的长度最大的子序列是多长。