【算法模板】动态规划,不可多得的干货

这篇具有很好参考价值的文章主要介绍了【算法模板】动态规划,不可多得的干货。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

================================================================================

📒博客首页:铁甲小宝同学 📒

🌞文章目的:动态规划基础篇分享🌞

🙏博主也在学习阶段,如若发现问题,请告知,非常感谢🙏

💗同时也非常感谢各位小伙伴们的支持💗

🌈每日一语:你相信光吗? 🌈

将过去和羁绊全部丢弃,不好吝惜那为梦想留下的泪水 。 ——路飞

【算法模板】动态规划,不可多得的干货,2024年程序员学习,算法,动态规划,代理模式

文章目录

  • 【算法模板】动态规划(基础DP篇)

    • 前言
  • 什么是动态规划?

  • 动态规划的做题方法

  • 一维DP

    • 简介
  • 走进一维DP

  • 模块练习题

  • 二维DP

    • 简介
  • 走进二维DP

  • 模块练习题

  • 总结

前言


博主因最近刷的大部分都是动态规划的算法题,所以也把博主所刷的心得和习题在本篇文章中总结分享给大家,并且希望能帮助到大家。

感谢: 感谢csdn、力扣、代码随想录等平台和大佬们提供的习题和题解!!


什么是动态规划?


动态规划 (英语:Dynamic programming,简称 DP),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题。(百度百科得到的答案)

简单的就是说:用简单的方法来解决复杂的问题!

核心思想:

动态规划的核心就是 有记忆,减少不必要的计算!

【算法模板】动态规划,不可多得的干货,2024年程序员学习,算法,动态规划,代理模式

动态规划的做题方法


一般我们在做动态规划这种题的时候一般会有一下这几个步骤:

  • 定义一个的dp数组。

  • dp数组的初始化。

  • 列举动态规划推导公式。

  • 进行循环遍历逐步改变dp数组的值,直道循环结束能获取我们所需要的值即可。

我们只要上述的几个步骤没有出现什么问题的话,那么这个这个题也就是手到擒拿了!

而上述步骤中比较难的就是 动态规划推导公式 的推导,一般在做题时我们很容易的知道这个题是用动态规划来解决这个问题。但是每次就会卡到动态规划推导公式这个地方(不要问我为什么5555)。所以这个也是我们需要提高的地方!!!

给大家一些 建议 ,在做动态规划题的时候 一定要自己推导自己的动态规划推导公式 ,就算写不出来我们在看题解的时候也可以那我们自己推导出来的公式和官方的公式进行一个对比,每次在做题的时候只要能保证这点,则以后的进步就会越来越大!!!


一维DP


简介

在上面我们已经知道了什么是 DP 了,那么什么又是 一维DP 呢?

一维DP:

通常的讲 一维DP 就是通过一维的数组来满足 推导公式 的一个求解。

int[] dp = new int[10];//则表示创建了一个长度为10的一维DP数组。

//例如:推导公式

dp[i] = max(dp[i - 2] + dp[i - 1] , dp[i])//这个就是一个比较简单的一维DP推导公式!

走进一维DP

上述中我们知道了什么是 一维DP ,那我们就要来走进这个它,并且征服它!同学们来看下面的例题吧。

【算法模板】动态规划,不可多得的干货,2024年程序员学习,算法,动态规划,代理模式

例题:

509. 斐波那契数

题目:

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 01 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0,F(1) = 1

F(n) = F(n - 1) + F(n - 2),其中 n > 1

示例:

输入:n = 2

输出:1

解释:F(2) = F(1) + F(0) = 1 + 0 = 1

做题步骤:

还记得我们第一步需要怎么来分析的吗?

第一步我们需要确定这题的 DP 数组该怎么去创建?

第二步需要我们推导出本题的 DP 公式。

第三步进行循环得到我们需要的结果。

思路:

通过做题步骤我们能知道这个 DP数组 的长度是 n + 1 (因为需要从0开始到n,所以长度也就是 n + 1

题目所说从 1 后面开始每一项的数字都是前两项的和。通过解析这句话我们能知道我们的 循环是从2开始,到n结束 。而推导公式则就是:

dp[i] = dp[i - 1] + dp[i - 2]

当我们完成上述的步骤时接下来就是将这题给实现了。

代码:

Python版本:

class Solution:

def fib(self, n: int) -> int:

if n < 2:

return n

dp = [0]* (n + 1)

dp[1] = 1

for i in range(2 , n + 1):

dp[i] = dp[i - 1] + dp[i - 2]

return dp[n]

Java版本:

class Solution {

public int fib(int n) {

if (n == 0) return 0;

if (n == 1) return 1;

int[] dp = new int[n + 1];

dp[1] = 1;

for (int i = 2; i < n + 1; i++){

dp[i] = dp[i - 1] + dp[i - 2];

}

return dp[n];

}

}

我们做了一个比较简单的DP题,那我们再来看另外一个简单的DP问题吧

题目:

746. 使用最小花费爬楼梯

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。

你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。

请你计算并返回达到楼梯顶部的最低花费。

示例:

输入:cost = [10,15,20]

输出:15

解释:你将从下标为 1 的台阶开始。

  • 支付 15 ,向上爬两个台阶,到达楼梯顶部。

总花费为 15

做题步骤:

最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

【算法模板】动态规划,不可多得的干货,2024年程序员学习,算法,动态规划,代理模式

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
【算法模板】动态规划,不可多得的干货,2024年程序员学习,算法,动态规划,代理模式

zZG4ubmV0L2ZlaTM0Nzc5NTc5MA==,size_16,color_FFFFFF,t_70)

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-29f1FhSB-1711207957181)]文章来源地址https://www.toymoban.com/news/detail-857042.html

到了这里,关于【算法模板】动态规划,不可多得的干货的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • C++动态规划模板汇总大全

    C++动态规划模板汇总大全

    如果你不太了解dp(动态规划)是个什么东西,请回到上次dp。 链接:动态规划算法详解 【题目描述】 观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。 在上

    2024年02月06日
    浏览(10)
  • 动态规划之最长公共子序列模板

    夏令营:动态规划特训 - 【算法模板题】最长公共子序列 - 蓝桥云课 (lanqiao.cn) 我们来解释一下状态转移方程吧。 dp[i][j]的含义是第i个和第j个字符,i与j的下标从1开始,代表着原子符串的第一个字符。那么理所当然字符串a的第0个字符和字符串b的0个字符的公共长度为0.如果字

    2024年02月12日
    浏览(13)
  • 【动态规划】最强最详细的思路及模板(C++)

    【动态规划】最强最详细的思路及模板(C++)

    本文根据力扣动态规划精讲(一)(二)(三)的框架编写。 动态规划精讲(一) - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台 目录 一 动态规划问题的特征 1.1 重叠子问题:子问题反复出现(递归树可以很清晰地看出) 1.2 最优子结构 1.3 贪心和动态规划的区别

    2024年02月08日
    浏览(10)
  • 【算法】动态规划 ⑧ ( 动态规划特点 )

    【算法】动态规划 ⑧ ( 动态规划特点 )

    求解类型 : 动态规划 必须是求 最值 , 可行性 , 方案数 , 三者之一 , 如果求其它内容 , 则不能使用动态规划算法 ; 求最值 : 最大值 , 最小值 等 ; 大规模问题的结果 由 小规模问题 的计算结果 取最大值 大规模问题的结果 由 小规模问题 的计算结果 取最小值 可行性 : 是否可行

    2023年04月08日
    浏览(10)
  • 【算法 - 动态规划】原来写出动态规划如此简单!

    【算法 - 动态规划】原来写出动态规划如此简单!

    从本篇开始,我们就正式开始进入 动态规划 系列文章的学习。 本文先来练习两道通过 建立缓存表 优化解题过程的题目,对如何将 递归函数 修改成 动态规划 的流程有个基本的熟悉。 用最简单的想法完成题目要求的 递归 函数; 定义明确 递归函数 的功能!!! 分析是否存

    2024年02月21日
    浏览(17)
  • 基于matlab实现极致攻防优化算法TTA求解复杂山地环境下无人机三维路径规划研究 注释清楚,干货满满,直接运行

    基于matlab实现极致攻防优化算法TTA求解复杂山地环境下无人机三维路径规划研究 注释清楚,干货满满,直接运行

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年02月04日
    浏览(46)
  • 60题学会动态规划系列:动态规划算法第三讲

    60题学会动态规划系列:动态规划算法第三讲

    简单多状态问题 文章目录 一.按摩师 二.打家劫舍系列 三.删除并获得点数 四.粉刷房子 力扣链接:力扣 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,

    2024年02月08日
    浏览(11)
  • 【算法】动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 )

    【算法】动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 )

    动态规划 , 英文名称 Dynamic Programming , 简称 DP , 不是具体的某种算法 , 是一种算法思想 ; 具体的算法都有具体的步骤 , 如 : 二分法 , 其 有固定的解决步骤 , 先取一个中心点 , 判断解在左边还是右边 , 然后在一边再取一个中心点 , 再进行判定 , 该算法有具体的步骤 ; 动态规划

    2024年01月16日
    浏览(14)
  • 【动态规划】动态规划算法基本概念,原理应用和示例代码

             动态规划(Dynamic Programming,简称DP)是一种解决多阶段决策问题的数学优化方法。它将原问题分解成若干个子问题,通过解决子问题只需解决一次并将结果保存下来,从而避免了重复计算,提高了算法效率。         通俗来讲,动态规划算法是解决一类具有重叠

    2024年01月21日
    浏览(14)
  • 60题学会动态规划系列:动态规划算法第四讲

    60题学会动态规划系列:动态规划算法第四讲

    买卖股票相关的动态规划题目 文章目录 1. 买卖股票的最佳时机含冷冻期 2. 买卖股票的最佳时期含⼿续费 3. 买卖股票的最佳时机III 4. 买卖股票的最佳时机IV 力扣链接:力扣 给定一个整数数组 prices ,其中第    prices[i]  表示第  i  天的股票价格 。​ 设计一个算法计算出最

    2024年02月13日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包