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文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh

Python实现PDF与多种图片格式之间互转(PNG, JPG, BMP, EMF, SVG)

《Python实现PDF与多种图片格式之间互转(PNG,JPG,BMP,EMF,SVG)》PDF和图片是我们日常生活和工作中常用的文件格式,有时候,我们可能需要将PDF和图片进行格式互转来满足... 目录一、介绍二、安装python库三、Python实现多种图片格式转PDF1、单张图片转换为PDF2、多张图

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu

java导出pdf文件的详细实现方法

《java导出pdf文件的详细实现方法》:本文主要介绍java导出pdf文件的详细实现方法,包括制作模板、获取中文字体文件、实现后端服务以及前端发起请求并生成下载链接,需要的朋友可以参考下... 目录使用注意点包含内容1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接使

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

基于Canvas的Html5多时区动态时钟实战代码

《基于Canvas的Html5多时区动态时钟实战代码》:本文主要介绍了如何使用Canvas在HTML5上实现一个多时区动态时钟的web展示,通过Canvas的API,可以绘制出6个不同城市的时钟,并且这些时钟可以动态转动,每个时钟上都会标注出对应的24小时制时间,详细内容请阅读本文,希望能对你有所帮助...

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4