最长公共子序列(LCS)是一个在一个序列集合中(通常为两个序列)用来查找所有序列中最长子序列的问题。一个数列 ,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则称为已知序列的最长公共子序列。
直接看代码:
#include <iostream>
#include <cstring>
using namespace std;
int f(string s1,string s2)
{
if(s1.length()==0||s2.length()==0)
return 0;
if(s1[0]==s2[0])
return 1+f(s1.substr(1),s2.substr(1));
else
return max(f(s1.substr(1),s2),f(s1,s2.substr(1)));
}
int main()
{
cout<<f("ABCD","ABD")<<endl;
return 0;
}