最長子序列

#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" 等都是它的子序列。
特別地,一個串本身,以及空串也是它的子序列。


對兩個串而言,可以有許多的共同的子序列,我們關心的是:它們所共同擁有的長度最大的子序列是多長。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章