当前位置: 首页 > news >正文

代码随想录算法训练营第四十六天|动态规划part13

647. 回文子串

题目链接:647. 回文子串 - 力扣(LeetCode)

文章讲解:代码随想录

思路:

以dp【i】表示以s【i】结尾的回文子串的个数,发现递推公式推导不出来此路·不通

以dp【i】【j】表示s【i】到s【j】的回文子串的个数,递推公式也推不出

正确 dp【i】【j】表示s【i】到s【j】是否为回文串

确定递归顺序:

dp【i】【j】依赖于dp【i+1】【j-1】因此 i从后往前遍历,j从前往后遍历

则最后秩序统计矩阵上三角为true的个数

class Solution {
public:int countSubstrings(string s) {vector<vector<bool>>dp(s.size(),vector<bool>(s.size(),false));int ans=0;for(int i=s.size()-1;i>=0;i--){    //这里实际上只修改上三角矩阵的值 for(int j=i;j<s.size();j++){if(s[i]==s[j]){if((i-j)<=1){dp[i][j]=true;ans++;}else{if(dp[i+1][j-1]==true){dp[i][j]=true;ans++;}}}}}return ans;}
};

516.最长回文子序列

题目链接:516. 最长回文子序列 - 力扣(LeetCode)

文章讲解:代码随想录

 思路:

由于是要判断是否是回文,即要比较s【i】与s【j】显然用二维数组定义是合适的

dp[i][j]表示s【i】到s【j】的最长回文子序列的长度

推导递推公式

if(s[i]==s[j]){

j==i   dp[i][j]=1

j-i=1 dp[i][j]=2

j-i>1 dp[i][j]=dp[i+1][j-1]+2

}else{

j-i=1 dp[i][j]=1

j-i>1 dp[i][j]=dp[i+1][j-1]

注意:这里是错的 考虑bba 或者abb 这里应该是dp【i】【j】=max(dp【i】【j-1】,dp【i+1】【j】)

遍历顺序:

与上题一样 i从大到小 j从小到大

初始化:直接初始化为1

class Solution {
public:int longestPalindromeSubseq(string s) {vector<vector<int>>dp(s.size(),vector<int>(s.size(),1));int size=s.size();for(int i=size-1;i>=0;i--){for(int j=i;j<s.size();j++){if(s[i]==s[j]){if(i==j){dp[i][j]=1;}if((j-i)==1){dp[i][j]=2;}if((j-i)>1){dp[i][j]=dp[i+1][j-1]+2;}}else{if((j-i)==1){dp[i][j]=1;}else{dp[i][j]=max(dp[i][j-1],dp[i+1][j]);}}}}return dp[0][s.size()-1];}
};

最后一天动态规划 开心!!!!!

http://www.dtcms.com/a/266737.html

相关文章:

  • 【LeetCode 热题 100】238. 除自身以外数组的乘积——(解法一)前缀积与后缀积
  • 算法学习笔记:7.Dijkstra 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • 物联网数据安全区块链服务
  • AI Agent意图识别
  • 二维码驱动的独立站视频集成方案
  • Mysql+neo4j创建节点和关系
  • Linux操作系统之文件(三):缓冲区
  • Kubernetes 服务发布基础学习
  • OpenSSL 内存泄漏修复全景:119 个历史 Commit 的类型分析与防御启示
  • 人工智能及其十大优势 Artificial Intelligence: With Its Advantages
  • PyCharm 安装使用教程
  • (LeetCode 每日一题) 3307. 找出第 K 个字符 II (位运算、数学)
  • 电力市场化改革中的智能决策革命:大模型与交易双驱动模式探析
  • 【微服务】记录-登录信息传递过程
  • 【AI大模型】深入理解 Transformer 架构:自然语言处理的革命引擎
  • LangChain 全面入门
  • Java 大视界 -- Java 大数据实战:智能安防入侵检测的特征工程与模型融合全解析
  • 文本分词 nltk
  • 【Unity笔记01】基于单例模式的简单UI框架
  • PowerPoint 转 PDF 转换器:Python GUI 工具的深度解析
  • python高级变量XI
  • vue-39(为复杂 Vue 组件编写单元测试)
  • 行阶梯形矩阵和行最简形矩阵的区别
  • HTTP 缓存
  • suricata新增协议处理流程
  • Windows系统x86机器安装麒麟ARM系统(自用记录)
  • 批量印刷拼版助手Quite Imposing Plus:Adobe 专业PDF拼版插件
  • 2025微信小程序wxapkg解包全攻略
  • ESP32S3将摄像头映射到LCD屏
  • Android开发前的准备工作