两个字符串的最大字符匹配个数

通过动态规划解决两个字符串的最大匹配长度问题,定义状态转移方程dp(i,j),给出示例和代码实现。" 102499006,7382364,JVM默认参数导致的内存溢出问题及解决,"['JVM', '内存管理', 'Metaspace', '故障排查']
摘要由CSDN通过智能技术生成

两个字符串的最大匹配长度

 

问题:给定两个字符串,计算这两个字符串的最大字符匹配个数

示例:

     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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值