扔掉抽象难懂专业名词,带你从头开始理解入门动态规划1

这篇具有很好参考价值的文章主要介绍了扔掉抽象难懂专业名词,带你从头开始理解入门动态规划1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

注:并非指专业名词概念不好,而是认为乍一接触dp就开始啃那些难得名词比较容易劝退,这里用简单的思维理解来了解入门dp。

什么是动态规划(dp)?

1.动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。

2.由于动态规划并不是某种具体的算法,而是一种解决特定问题的方法,因此它会出现在各式各样的数据结构中,与之相关的题目种类也更为繁杂。

例题

汗流浃背了嘛,哥们,没关系接下来结合例题带你走入dp

扔掉抽象难懂专业名词,带你从头开始理解入门动态规划1,动态规划内卷计划,动态规划,算法

如何进行动态规划算法的实现?

首先创建一个dp表:

dp表???

dp表就是一个数组被命名为dp用来帮助我们进行动态规划的实现,存储分解的简单子问题的状态。

在这里这道题目中因为要求下一个泰波那契数需要前三个数据,所以我们将泰波那契的每一个数存储下来以用来后续使用

1.状态表示

2.状态转移方程

3.初始化

4.填表顺序

5.返回值

一般来说是通过上述五步来进行实现动态规划的算法,接下来我会通过简单易懂的非官方语言讲解五步。

1.状态表示

状态表示就是dp表内数据所蕴含的意义,以例题中dp表中的数据意义就是第x个泰波那契数

一般来说状态表示如何得到呢?

1.题目要求(题目直接给了)

2.经验+题目要求(多多的刷题)

3.分析题目的要求中发现的重复子问题(机灵的脑袋瓜分析)

2.状态转移方程

dp[i]该等于什么,或者说为dp[i]赋值的方式方法

该例题的状态转移方程就是前三个数据相加。

3.初始化

要通过对dp表初始化来保证使用方程填表时不越界,能运行的效果

例如本题的dp[0]dp[1]dp[2]三个数据是无法通过状态转移方程得到的,所以我们需要初始化这三个数据

4.填表顺序

我们要选择合适的填表顺序使得通过状态转移方程来填表时能够正常进行,填写当前状态时所需要的数据已经知道。

此题中毫无疑问,我们应该从dp[0]——>向dp[n]的方向移动顺序填表.

5.返回值

从dp表中的数据结合题目要求,返回一个恰当的值

此题中我们就恰好要返回dp[n]

例题代码实现(非最简最优,仅供参考)

class Solution {
public:
    int tribonacci(int n) {
        vector<int> dp={0,1,1};
        for(int i=3;i<=n;i++)
        {
            dp.push_back(dp[i-1]+dp[i-3]+dp[i-2]);
        }
        return dp[n];
    }
};

结尾

怎么样学会了嘛,点个赞是对我最大的鼓励。害怕自己忘记嘛,收藏一下吧,温故才能知新呢。

我会接下来发布更多有用易懂的知识包括但不限于动态规划相关,贪心算法相关等各式实用有用算法以及编程语言语法等知识,感兴趣请点个关注。文章来源地址https://www.toymoban.com/news/detail-768740.html

到了这里,关于扔掉抽象难懂专业名词,带你从头开始理解入门动态规划1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • day0 -- Mysql专业名词认识部分

    数据库(database)/资料库 常见的数据库/资料库且以物理形式存在的,比如图书馆,再比如书柜。 是一种有组织的存放资料/数据的 容器 。 数据库管理系统(DBMS) 创建数据库和管理数据库的系统,可以对数据库进行组织、管理、访问、修改等操作的一套软件。 我们常说的Mysql是

    2024年02月07日
    浏览(27)
  • 从头开始机器学习:逻辑回归

            本篇实现线性回归的先决知识是:基本线性代数,微积分(偏导数)、梯度和、Python (NumPy);从线性方程入手,逐渐理解线性回归预测问题。

    2024年02月07日
    浏览(29)
  • 数字证书的相关专业名词(下)---OCSP及其java中的应用

    上篇文章我们了解了根证书和校验证书有效性中的一个比较重要的渠道–CRL,但是CRL有着时间延迟,网络带宽消耗等缺点,本篇文章我们了解另一种更高效也是目前被广泛应用的校验证书有效性的另一种方式–OCSP,并且我会结合java来聊聊如何获取OCSP地址以及如何去通过获取

    2024年02月07日
    浏览(39)
  • 应用实战|从头开始开发记账本2:基于模板快速开始

    上期视频我们创建好了BaaS服务的后端应用。从这期视频开始,我们将从头开发一个互联网记账本应用。本期视频我们介绍一下如何使用模板快速开启我们的应用开发之旅。 应用实战|从头开始开发记账本2:基于模板快速开始 本期视频我们介绍了如何通过模板快速开始MemFi

    2024年04月17日
    浏览(34)
  • 从头开始构建大语言模型(LLM)

    了解如何从头开始构建大语言模型,从而创建、训练和调整大语言模型! LLMs 在“从头开始构建大语言模型”中,你将了解如何从内到外LLMs工作。在这本富有洞察力的书中,畅销书作家塞巴斯蒂安·拉施卡 (Sebastian Raschka) 将指导您逐步创建自己的LLM阶段,并用清晰的文本、

    2024年02月01日
    浏览(30)
  • Mac/win开发快捷键、vs插件、库源码、开发中的专业名词

    目录 底部dock栏 点按两下,更多操作,相当于windows鼠标右键 触控板 手势(2/3指) 鼠标右键 快捷键 鼠标选择后+shift+⬅️→改变选择 window Ctrl + Shift + Esc:强制关闭程序 mac Command + Option + Esc:强制关闭程序 command+⬅️:删除←边的全部内容 commad+tab显示下栏 command+shift+z向后撤

    2024年02月15日
    浏览(32)
  • [SQL系列] 从头开始学PostgreSQL 分库分表

            分库分表是一种数据库架构设计的方法,用于应对大规模数据的存储和查询。当单个数据库的存储容量或查询性能无法满足需求时,可以通过将数据分散存储在多个数据库服务器上,以提高系统的可扩展性和性能。         分库分表通常包括两个步骤:分库和

    2024年02月14日
    浏览(25)
  • 从头开始创建一个vue3.0项目

    vue3新变化 首次渲染更快,diff算法更快,内存占用更少,打包体积更小 更好的Ts语法支持 Composition API 破坏语法的更新 移除了$on方法 移除过滤器选项(插值表达式不能够再使用过滤器filter) 移除.sync(v-bind不能使用.sync修饰符) Vue3.0相关网址链接  Vue3.0官方地址 Vite 官网地址

    2023年04月26日
    浏览(32)
  • 使用Python中从头开始构建决策树算法

    决策树(Decision Tree)是一种常见的机器学习算法,被广泛应用于分类和回归任务中。并且再其之上的随机森林和提升树等算法一直是表格领域的最佳模型,所以本文将介绍理解其数学概念,并在Python中动手实现,这可以作为了解这类算法的基础知识。 在深入研究代码之前,

    2024年02月13日
    浏览(27)
  • SpringCloud学习路线(1)—— 从头开始的微服务

    一、服务架构的历史 现有的服务框架: 单体架构 概念: 将业务所有功能集中在一个项目中开发,打包部署 优点: 架构简单,部署成本低 缺陷: 耦合度高 分布式架构 概念: 根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务 优点: 耦合度低,

    2024年02月16日
    浏览(23)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包