当前位置: 首页 > 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.xdnf.cn/news/1080433.html

相关文章:

  • WPF_Reactive_控件调试方法
  • PortSwigger Labs SQLInjection LAB6-7
  • Golang 运算符
  • 3D建模公司的能力与技术
  • 【Spring Boot】Druid 连接池 YAML 配置详解
  • 三、docker软件安装:gitlab,nexus,mysql8,redis,nacos,nginx
  • Apache RocketMQ进阶之路阅读笔记和疑问
  • 高职院校“赛岗课”一体化网络安全实战类人才培养方案
  • python -二叉树路径和为指定的值(根节点到叶子节点)
  • 译码器Multisim电路仿真汇总——硬件工程师笔记
  • 【机器学习深度学习】什么是下游任务模型?
  • 【STM32实践篇】:I2C驱动编写
  • 【模糊集合】示例
  • 【机器学习深度学习】AI 项目开发流程:从需求到部署的五大阶段
  • 机器学习安装使用教程
  • Python训练营打卡Day59(2025.7.3)
  • java教程——初识guava(2)
  • 这才叫窗口查询!TDEngine官方文档没讲透的实战玩法
  • 认识kubernetes kubeadm安装k8s
  • Web基础关键_007_JavaScript 的 DOM
  • 34. 在排序数组中查找元素的第一个和最后一个位置
  • WPF学习笔记(22)项面板模板ltemsPanelTemplate与三种模板总结
  • 【进阶篇-消息队列】——Kafka如何实现事务的
  • R 语言安装使用教程
  • 物联网MQTT协议与实践:从零到精通的硬核指南
  • 【2.4 漫画SpringBoot实战】
  • Java的SpringAI+Deepseek大模型实战之会话记忆
  • Qt Creator自定义控件开发流程
  • Windows 10 2016 长期服务版
  • WPF学习笔记(16)树控件TreeView与数据模板