目录
定义dp数组
这类问题的共性是会提供两个数组,寻找他们共同的子序列、子数组。设第一个数组为s,第二个数组为t。则可以设二维dp数组,其大小为len(s + 1)*len(t + 1)
dp[i][j]表示 s 前 i 个长度,与 t 前 j 个长度进行比较
初始化dp数组
初始化时通常将dp[i][0]和dp[0][i]全设为0,表示长度为0时,比较结果为0
状态转移方程
dp[i][j] 一般可以由 dp[i-1][j], dp[i][j - 1]推出,或者由dp[i-1][j-1]推出
例:最长公共子序列:
if (text1[i - 1] == text2[j - 1]) //注意这里 比较的是i-1 j-1