• 最长公共字串


    最长公共字串

    解释:

    当A[i]==B[j]的情况下,我不能像相等情况下把他们都去掉然后加0来得到子问题,因为这样会造成缺失,因为A[i]可能会和B[j-1]或前面的相等

    A串:ABCBDAB

    B串:BDCABA

    最长公共字串的长度就是:4 BCBA

    dp[i][j]表示:A串的前i个字符和B串中的前j个字符所能组成的最长公共字串的长度

    dp[][]+1

    AB  B   1

    A   #    0

    相等:

    dp[i][j]=dp[i-1][j-1]+1

    a[i]!=b[j]不相同的情况

    AB  BD

    dp[2][2]> dp[2][1]

    AB  B   1 dp[i][j-1]  dp[2][1]

    A  BD   0 dp[i-1][j]  dp[1][2]

    A  B    0 dp[i-1][j-1] dp[1][1]

    说一下动态规划

    dp[i][j]=dp[i-1][j-1]+1

    A串: ADB

    B串: CB

    为啥:

    当A[3]==B[2]

    dp[3][2]=dp[2][1]+1

    动态规划:把大问题划分成结构相同的子问题

    当A[3]==B[2]

    A串: AD

    B串: C

    从后往前比的话:

    A串: DA

    B串: C

    已知的相同是一个B

    A串: ADB

    B串: CBD

    大问题划分成子问题

    解释:

    当A[i]==B[j]的情况下,我不能像相等情况下把他们都去掉然后加0,因为这样会造成缺失,因为A[i]可能会和B[j-1]或前面的相等

  • 相关阅读:
    数据库设计
    最近发生的事
    轻松搞定面试中的二叉树题目
    二叉树的遍历方法
    静态库Lib和动态库Dll
    深入理解C/C++数组和指针
    夜间日记
    typedef用法小结
    什么是静态链接库,什么是动态链接库
    线段树
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/8098047.html
Copyright © 2020-2023  润新知