动态规划
仿生羊_
这个作者很懒,什么都没留下…
展开
-
力扣712.两个字符串的最小ASCII删除和
s2[j-1] 时对于dp[i][j],dp[i-1][j] 和 dp[i][j-1] 一定与 dp[i-1][j-1]比较过了,也就是前两者一定大于等于后者,所以我在代码中只比较了dp[i-1][j] 和 dp[i][j-1]。①当 s1[i-1] == s2[j-1](注意 i 和 j 表示的是前i个前j个) 时dp[i][j] = dp[i-1][j-1] + s1[i-1];②反之 dp[i][j] = max(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]);原创 2023-06-09 15:29:30 · 174 阅读 · 0 评论 -
力扣516.最长回文子序列
i+1][j-1],[i+1][j],[i][j-1]分别位于[i][j]的左下方,下方,和左方,所以应该从下往上,从左往右遍历,又因为i原创 2023-06-09 11:17:14 · 51 阅读 · 0 评论 -
力扣5. 最长回文子串
3. j - i > 1, dp[i][j]的值取决于dp[i+1][j-1]。如"faf"、"fabf";如果s[i]和s[j]不相等则dp[i][j]一定等于0,如果s[i]与s[j]相等则要考虑以下三种情况。2. i 与 j 相邻 即 j - i == 1,dp[i][j] = 1, 如"aa";填充dp时记录 j - i 最长的 j 和 i 值 截取 i~j 的字符串返回即可。1. i == j,dp[i][j] = 1, 如 "a";原创 2023-06-08 18:27:59 · 28 阅读 · 0 评论 -
力扣 647.回文子串
dp[i+1][j-1]位于dp[i][j]的左下方,因此采用自下而上、自左向右的方法遍历dp,又因为 j >= i 所以只会遍历到ap数组的右上半部分,具体代码如下。3. j - i > 1, dp[i][j]的值取决于dp[i+1][j-1]。如果s[i]和s[j]不相等则dp[i][j]一定等于0,如果s[i]与s[j]相等则要考虑以下三种情况。对于字符s[i],如果s[i-1]与s[i+1]相等则从i-1到i+1三个字符构成回文字符。1. i == j,dp[i][j] = 1, 如 "a";原创 2023-06-08 14:41:45 · 88 阅读 · 0 评论