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合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Python进行PDF文件拆分的示例详解

《Python进行PDF文件拆分的示例详解》在日常生活中,我们常常会遇到大型的PDF文件,难以发送,将PDF拆分成多个小文件是一个实用的解决方案,下面我们就来看看如何使用Python实现PDF文件拆分... 目录使用工具将PDF按页数拆分将PDF的每一页拆分为单独的文件将PDF按指定页数拆分根据页码范围拆分

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

Nginx实现动态封禁IP的步骤指南

《Nginx实现动态封禁IP的步骤指南》在日常的生产环境中,网站可能会遭遇恶意请求、DDoS攻击或其他有害的访问行为,为了应对这些情况,动态封禁IP是一项十分重要的安全策略,本篇博客将介绍如何通过NG... 目录1、简述2、实现方式3、使用 fail2ban 动态封禁3.1 安装 fail2ban3.2 配

Vue3中的动态组件详解

《Vue3中的动态组件详解》本文介绍了Vue3中的动态组件,通过`component:is=动态组件名或组件对象/component`来实现根据条件动态渲染不同的组件,此外,还提到了使用`markRa... 目录vue3动态组件动态组件的基本使用第一种写法第二种写法性能优化解决方法总结Vue3动态组件动态

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python实现批量分割PDF文件

《使用Python实现批量分割PDF文件》这篇文章主要为大家详细介绍了如何使用Python进行批量分割PDF文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、架构设计二、代码实现三、批量分割PDF文件四、总结本文将介绍如何使用python进js行批量分割PDF文件的方法

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

使用Python实现PDF与SVG互转

《使用Python实现PDF与SVG互转》SVG(可缩放矢量图形)和PDF(便携式文档格式)是两种常见且广泛使用的文件格式,本文将详细介绍如何使用Python实现SVG和PDF之间的相互转... 目录使用工具使用python将SVG转换为PDF使用Python将SVG添加到现有PDF中使用Python将PD