代码随想录算法训练营day46|动态规划part12

今天就结束动态规划章节了,以后还要多加练习。

今天的两道题都很有难度,647回文子串的思路非常巧妙,因为用一维dp数组比较难表示子串的起点和终点,所以需要用二维dp数组表示,dp[i][j]表示以i为起点,j为终点的子串是不是回文子串,当s[i]和s[j]不同时,该子串不是回文子串;当s[i]==s[j]时,分类讨论:如果该子串的长度为1或2,则该子串就是回文子串,若该子串长度>2,则如果[i+1,j-1]是回文子串,则[i,j],也是回文子串;

另外要注意的一点是这题的遍历顺序,因为dp[i][j]可能由左下角的值推导而来,所以需要从下往上,从左到右推导;

516最长回文子序列看起来好像和647回文子串很不一样,因为这题不是连续的子串而是中间可以有间隔,但是递推的思想其实是差不多的。同样定义二维dp数组,dp[i][j]表示以i为起点,j为终点中最长子串的长度,所以当s[i]==s[j]时,dp[i][j]=dp[i+1][j-1]+2;当s[i]!=s[j]时,dp[i][j]就取dp[i][j-1]和dp[i+1][j]的最大值。对于初始化,因为单个的字符是回文子串,所以dp[i][i]=1,其它的部分就初始化为0。

647. 回文子串

代码随想录

516.最长回文子序列

代码随想录

动态规划总结篇

代码随想录

相关推荐
課代表3 分钟前
正弦函数与椭圆的关系
数学·算法·几何·三角函数·椭圆·正弦·周长
zl_vslam6 分钟前
SLAM中的非线性优-3D图优化之相对位姿Between Factor(七)
人工智能·算法·计算机视觉·3d
CoderYanger6 分钟前
动态规划算法-简单多状态dp问题:12.打家劫舍Ⅱ
开发语言·算法·leetcode·职场和发展·动态规划·1024程序员节
一水鉴天8 分钟前
专题讨论 类型理论和范畴理论之间的关系:闭关系/闭类型/闭范畴 与 计算式(ima.copilot)
开发语言·算法·架构
元素之窗13 分钟前
MATLAB 的“面子工程”:一键切换数值显示风格 —— format 命令小记
开发语言·算法·matlab
云泽80818 分钟前
蓝桥杯枚举算法精讲:从普通枚举到二进制枚举
算法·职场和发展·蓝桥杯
一水鉴天27 分钟前
整体设计中的三个“闭”概念-闭集或度量空间:有序闭环Z、有界闭域R和有限闭群C
网络·人工智能·算法
转基因30 分钟前
lambda表达式
算法
明洞日记41 分钟前
【VTK手册017】 深入详解 vtkImageMathematics:医学图像的基本算术运算
c++·图像处理·算法·vtk·图形渲染
杰瑞不懂代码42 分钟前
【公式推导】AMP算法比BP算法强在哪(一)
python·算法·机器学习·概率论