动态规划五步曲

news/2024/7/24 5:50:04 标签: 动态规划, 算法

一、什么是动态规划五步曲

确定dp数组(dp table)以及下标的含义
确定递推公式
dp数组如何初始化
确定遍历顺序
举例推导dp数组

二、 个人赏析

这是我从某网站上看到的关于动态规划的教学系列。作为应试来说,这个 提纲确实不错,能让应试者掌握基础题目的解法,可是遇到一些拓展题目了,这五步曲的第一步能走通吗?
归根结底,第一步确定dp数组以及下标的含义,怎么确定?
(1)根据记忆搜索
(2)根据题目性质推敲

根据记忆搜索就是回想以前用过的dp数组的含义,看能否套在这个题目上,这是一种遍历已知方法的方式。只能解决有限种dp问题。

第二种,根据题目性质推导。怎么推导?这才是动态规划的难点所在。要深刻理解动态规划的含义:交叠子问题可以重复利用。

将问题拆解为几个问题求解,这几个小问题在求解过程中,又利用到了重复求解的答案(比如问题A拆分成BDC,而B用到D、C,那么我们可以存储DC的答案)。利用空间换时间的特性,开辟数组存储子问题的答案而不必重复求解,这才是动态规划的精髓所在。


http://www.niftyadmin.cn/n/5067216.html

相关文章

【1++的刷题系列】之双指针

👍作者主页:进击的1 🤩 专栏链接:【1的刷题系列】 文章目录 一,什么是双指针二,相关例题例一例二例三例四例五 一,什么是双指针 常见的双指针有两种形式:一种是对撞指针&#xff08…

【成像光敏描记图提取和处理】成像-光电容积描记-提取-脉搏率-估计(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

python实现进制转换

在Python中,可以编写一个函数来将一个数从一个进制转换到另一个进制。以下是一个简单的实现示例: def convert_base(num, base_from, base_to):"""将一个数从一个进制转换到另一个进制。参数:num: 需要转换的数base_from: 原始进制 (必须是2到36)base_to: 目…

语义分割 Semantic Segmentation

之前了解过语义分割的内容,感觉可以做好多东西,然后就抽空学习了一下,这里记录一下方便以后查阅,这篇文章可能也会随着学习的深入不断更新。 语义分割 Semantic Segmentation 一些基本概念几种语义分割算法Fully Convolutional Ne…

安装使用TinyCore Linux的一些收获

为了学习Linux Shell编程,决定安装一个纯粹的Linux,由于电脑硬件配置较低,选择了最轻量化Llinux操作系统版本TinyCore Linux。 一、TinyCore Linux有三个版本 打开TinyCore Linux的下载页面 http://www.tinycorelinux.net/downloads.html&a…

2023年中国反射膜产量及市场规模分析:随着太阳能产业快速发展,规模持续扩大[图]

反射膜是一种具有高反射能力的薄膜材料,能够将光线反射回源头,起到增强反射效果的作用。反射膜广泛应用于太阳能电池板、建筑玻璃、车窗、显示器、光学仪器等领域。 反射膜产业链 资料来源:共研产业咨询(共研网) 随着…

十天学完基础数据结构-第七天(图(Graph))

图的基本概念 图是一种数据结构,用于表示对象之间的关系。它由两个基本组件构成: 顶点(Vertex):也被称为节点,代表图中的对象或实体。 边(Edge):连接两个顶点的线&…

使用Python优雅的绘制甘特图

简介 Gantt图表是一种条形图,用于描绘项目进度。图表在垂直轴上列出要执行的任务,在水平轴上列出时间间隔。图中水平条的宽度显示每个活动的持续时间。在Python中,我们可以使用Plotly库来创建和展示Gantt图表。 基础的Gantt图表 首先,我们来创建一个基础的Gantt图表,展…