两个字符串的最大匹配长度
问题:给定两个字符串,计算这两个字符串的最大字符匹配个数
示例:
str1 = abbc a b bc
str2 = eaabacbcbac eaabacbcbac
最大匹配个数为4 。
动态规划求解:
定义dp(i,j)表示str1(0,i)和str2(0,j)的最大字符匹配个数
子问题递推关系:
dp(i,j) = max{
dp(i-1,j-1)+1 if str1[i] == str2[j],
dp(i-1, j-1) if str[i] != str2[j],
dp(i-1,j) , dp(i,j-1)}
最小子问题:
dp[0,len(str1)]=0, dp(len(str2),0)=0
代码:
#include <math.h>
template<typename T>
int MaxMatch(T* match, int m_size, T* pattern, int p_size)
{
if (match == nullptr || pattern