韩国唯美网站设计,网页制作代码格式,济南建筑设计公司,个人网站多少钱一年今天就结束动态规划章节了#xff0c;以后还要多加练习。
今天的两道题都很有难度#xff0c;647回文子串的思路非常巧妙#xff0c;因为用一维dp数组比较难表示子串的起点和终点#xff0c;所以需要用二维dp数组表示#xff0c;dp[i][j]表示以i为起点#xff0c;j为终点…今天就结束动态规划章节了以后还要多加练习。
今天的两道题都很有难度647回文子串的思路非常巧妙因为用一维dp数组比较难表示子串的起点和终点所以需要用二维dp数组表示dp[i][j]表示以i为起点j为终点的子串是不是回文子串当s[i]和s[j]不同时该子串不是回文子串当s[i]s[j]时分类讨论如果该子串的长度为1或2则该子串就是回文子串若该子串长度2则如果[i1,j-1]是回文子串则[i,j]也是回文子串
另外要注意的一点是这题的遍历顺序因为dp[i][j]可能由左下角的值推导而来所以需要从下往上从左到右推导
516最长回文子序列看起来好像和647回文子串很不一样因为这题不是连续的子串而是中间可以有间隔但是递推的思想其实是差不多的。同样定义二维dp数组dp[i][j]表示以i为起点j为终点中最长子串的长度所以当s[i]s[j]时dp[i][j]dp[i1][j-1]2;当s[i]!s[j]时dp[i][j]就取dp[i][j-1]和dp[i1][j]的最大值。对于初始化因为单个的字符是回文子串所以dp[i][i]1,其它的部分就初始化为0。 647. 回文子串 代码随想录 516.最长回文子序列 代码随想录 动态规划总结篇 代码随想录