2w+字绝杀!动态规划.pdf来了

2024-01-07 00:10
文章标签 动态 规划 pdf 2w 绝杀

本文主要是介绍2w+字绝杀!动态规划.pdf来了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

大家好,我是bigsai,好久不见,甚是想念。

今天给大家分享我的动态规划原创的pdf,2w多字,里面囊括28道最经典的动态规划问题,可谓是绝杀利器(自吹一波)!

一直有朋友说动态规划很难,确实动态规划非常灵活,但是对于找工作来说,我们需要掌握的动态规划其实相比竞赛范畴那些复杂的没那么难,一些状态转移方程、数组定义方式有的还是很容易看出来的,有的不容易看出来思考看别人解答也是可以理解的。

刚好现在牛客的一个专栏笔刷101有动态规划系列的题,我把里面和自己加了一些动态规划的题目都写了,我的实现是基于牛客的笔刷101基础,但我给了牛客和力扣的对应链接的。

牛客笔刷101链接:https://www.nowcoder.com/exam/oj?tab=%E7%AE%97%E6%B3%95%E7%AF%87&topicId=295

这个题库总结不错,建议大家刷一下。

50a108f63ecc10882cf71bb2857c6d69.png

什么是动态规划

动态规划的范围虽然确实是很广很难,但是从整个动态规划出现的频率来看,这几种基础的动态规划理解容易,学习起来压力不大,并且出现频率非常高。

这几个常见的动态规划有:连续子数组最大和,子数组的最大乘积,最长递增子序列(LIS),最长公共子序列(LCS),最长公共子串,最长公共子串,不同子序列。

首先很多人问,何为动态规划?动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。通俗一点动态规划就是从下往上(从前向后)阶梯型求解数值。

那么动态规划和递归有什么区别和联系?

总的来说动态规划从前向后,递归从后向前,两者策略不同,并且一般动态规划效率高于递归。

不过都要考虑初始状态,上下层数据之间的联系。很多时候用动态规划能解决的问题,用递归也能解决不过很多时候效率不高可能会用到记忆化搜索。

对于一个动态规划的问题来说,通常解决也是有技巧的,大致来说有以下几个步骤:

  • 确定dp数组含义:定义dp数组的维度以及dp数组定义(对应下标值的含义)。

  • 确定递推式:确定当前下标的dp值与前面已确定结果之间的关联。

  • 初始化dp数组:考虑dp数组的0号位置、边缘位置以及特殊情况的一些值。

  • 确定遍历顺序:正确的遍历进行dp推导,保证让数据结果一层一层"铺满"。

当然动态规划也能有很多空间优化,有些只用一次的值,你可以用一些变量去替代。有些二维数组很大也可以用一维数组交替替代。当然动态规划专题很大,有很多比如树形dp、状压dp、背包问题等等经常出现在竞赛中,能力有限这里就将一些出现笔试高频的动态规划!

最后做动态规划的问题时候,有几个小建议一定要处理好:

  • 多尝试dp数组维度和含义,这个需要有一定的经验才更好。

  • 初始、边缘等情况初始情况好好考虑,要让初始、边缘等能够正常参与递推。

  • 推导状态转移时候要跳出思维限定,只寻找这个结果和前面的联系(不要考虑前面哪里来的、前面值是否正确之类),这点和有递归信赖是有点类似的。

不太明白?看完这些题解你应该会明白:

3ae481608593cd806d25fd8e2de39e44.png
部分截图
f67f02a7288c51b3bb7501dccacf0cde.png

结语

这个其实还没有完全完善(在dp系列还没有做好归纳总结,缺一些),但是鉴于很多人需要,我就先分享给大家了,暂时先不放在公众号分享给大家(后面完善再放到公众号),有些不错的经典题后面也会单独作为文章发出来分享交流。

后续都会同步到仓库中,还求个starhttps://github.com/javasmall/bigsai-algorithm

获取方式:

  • 分享在交流群中,有我好友的可以直接问我要,可以分享给好友

  • 加我好友(bigsai66)备注(动态规划)我发给你。

因为整理比较粗糙,难免可能有些差错,先分享给一部分人看看,有问题修修改改然后不断完善,最近有点忙无法保证输出,咱们后面再见!

欢迎添加 「bigsai66」,备注[动态规划]

b195b523211621f1a88ffaa53e7fddda.png

好东西记得分享(点赞、再看)一下

这篇关于2w+字绝杀!动态规划.pdf来了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/578088

相关文章

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

Python实现一键PDF转Word(附完整代码及详细步骤)

《Python实现一键PDF转Word(附完整代码及详细步骤)》pdf2docx是一个基于Python的第三方库,专门用于将PDF文件转换为可编辑的Word文档,下面我们就来看看如何通过pdf2doc... 目录引言:为什么需要PDF转Word一、pdf2docx介绍1. pdf2docx 是什么2. by

Python实现pdf电子发票信息提取到excel表格

《Python实现pdf电子发票信息提取到excel表格》这篇文章主要为大家详细介绍了如何使用Python实现pdf电子发票信息提取并保存到excel表格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录应用场景详细代码步骤总结优化应用场景电子发票信息提取系统主要应用于以下场景:企业财务部门:需

SpringBoot实现Kafka动态反序列化的完整代码

《SpringBoot实现Kafka动态反序列化的完整代码》在分布式系统中,Kafka作为高吞吐量的消息队列,常常需要处理来自不同主题(Topic)的异构数据,不同的业务场景可能要求对同一消费者组内的... 目录引言一、问题背景1.1 动态反序列化的需求1.2 常见问题二、动态反序列化的核心方案2.1 ht

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1