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

Day60 动态规划总结

647. 回文子串

回文的做法注定我们得从里面入手,逐渐扩散到边界

初始化:准备一个ans,找到一个回文子串加一个

        dp = [[0] * n for _ in range(n)]ans = 0

遍历公式: 当s[i]==s[j]的时候,只要里面还是回文串,就能说明s[i:j + 1]是回文串

                if s[i] == s[j]:if j - i > 2:if dp[i + 1][j - 1] == 1:ans += 1dp[i][j] = 1else:ans += 1dp[i][j] = 1

516.最长回文子序列

与上题不同,此题找的是最长回文子序列,回首前面的数组子序列题,我们要注意好继承的情况,以及dp数组的含义应该是:当前包含的最长回文子序列的长度

初始化:每个回文串的最低长度都为1

        dp = [[1] * n for _ in range(n)]

遍历公式: 字符相同,就在原最长长度上加2,不然就继承最长数目

                if s[i] == s[j]:if j - i > 1:dp[i][j] = dp[i + 1][j - 1] + 2else:dp[i][j] = j - i + 1else:dp[i][j] = max(dp[i + 1][j], dp[i][j - 1])

动态规划总结

写法总结:

1.创建dp数组,做好数组下标定义是成功的基础

2.初始化注意题目要求

3.遍历公式注意数组下标定义

4.遍历顺序注意题目求解

5.dp举例验证结果正确性

类型区分:

1.爬楼梯与路径问题

从过程得到结果

2.背包问题

组合数与排列数,01亦或完全,更多时候需要对题目进行解读,能否转换成背包问题是关键

3.打家劫舍

线性,环形,树状打劫,归根究底注意偷与不偷的状态区分

4.股票买卖

买与卖的遍历公式,已经更多状态就需要改变dp数组进行状态压缩来达到目的

5.编辑距离

子数组与子序列的遍历区分,以及不同题目要求的遍历公式的微妙区别

6.回文字符串

回文特点运用于字符串,从里到外是关键顺序

Need have brave to beat issues with facing endless failures.

http://www.lryc.cn/news/20245.html

相关文章:

  • UVM仿真环境搭建
  • Azure AI基础到实战(C#2022)-认知服务(1)
  • 光栅化Triangles(笔记)
  • 【Oarcle】如何显示日本年号的日期格式 ?
  • 57_Pandas中的json_normalize将字典列表转换为DataFrame
  • OpenAPI SDK组件之javassist字节码
  • 【LeetCode】1247. 交换字符使得字符串相同(超级简单的算法,击败100%)
  • 23. 合并K个升序链表
  • 软中断与tasklet简介
  • JUC 之 线程阻塞工具 LockSupport
  • 常用数据结构总结-Java版
  • 【基础算法】二分例题(我在哪?)
  • 怕上当?来看这份网络钓鱼和诈骗技术趋势
  • 2023年全国最新保安员精选真题及答案6
  • unity热更新新方案,ILRuntime
  • 【J1】【队列】报数游戏
  • 《程序员的自我修养》阅读笔记
  • 【跟着ChatGPT学深度学习】ChatGPT带我入门深度学习
  • 软工2023个人作业一——阅读和提问
  • 【Redis】线程模型:Redis是单线程还是多线程?
  • FSM(有限状态机)
  • 奇妙的background-clip:text
  • Vmware虚拟机无法联通主机解决方法二
  • Boost资料整理备忘
  • 规则引擎与风控系统01:新问题,新挑战
  • Oracle-00-卸载篇
  • Java线程池使用与原理解析1(线程池优点、使用方法、参数含义及线程池运转机制)
  • windows下编译leveldb(动态库+静态库)
  • 如何用76行代码写一个AI微信机器人......
  • 拿下域控后,我还是对大佬的操作念念不忘