ToB企服应用市场:ToB评测及商务社交产业平台

标题: 线性dp:最长公共子串 [打印本页]

作者: 美食家大橙子    时间: 2024-8-23 12:47
标题: 线性dp:最长公共子串
最长公共子串

力扣链接
题目叙述:

给定两个字符串,输出其最长公共子串的长度。
输入
  1. ABACCB
  2. AACCAB
复制代码
输出
  1. 3
复制代码
解释

最长公共子串是ACC,其长度为3。
与最长公共子序列的区别

动态规划思路

状态变量以及其寄义

递推公式


  • 那么,我们很容易的就可以得出递推公式:

    • f[j]=f[i-1][j-1]+1(a==b[j])
    • f[j]=0)(a!=b[j])

  • 边界条件为:

    • f[0][j]=0
    • f[0]=0

遍历顺序:


  • 显然是从上到下,从左到右。
如何初始化?


  • 处置惩罚好上面所说的边界条件,并且根据递推公式来进行初始化f数组即可。
举例打印dp数组


  • 举例如如图所示:


  • f[j] 的值如图所示。
最终代码实现

[code]#include#includeusing namespace std;char a[200]="BCCABCCB";char b[200]="AACCAB";int f[201][201];int main(){  int ans=0;  for(int i=1; i




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4