最长公共字串
解释:
当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]或前面的相等