代码随想录算法训练营第三十八天| 动态规划,509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯

目录

动态规划

题目链接: 509. 斐波那契数

思路

代码

题目链接: 70. 爬楼梯

思路

代码

题目链接: 746. 使用最小花费爬楼梯

思路

代码

总结


动态规划

        Dynamic programming,DP问题。某一问题包含很多重叠的子问题,每个状态都由上一个状态推导而来。问题包括:基础问题,背包问题,打家劫舍,股票问题,子序列问题,

        步骤:

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

题目链接:509. 斐波那契数

思路

        题目给出了dp五部曲中的所有信息。

代码

class Solution {
public:int fib(int n) {if (n <= 1)return n;vector<int> dp(n + 1); // 定义dp数组,dp[i]就是斐波那契数列第i个的值dp[0] = 0;dp[1] = 1; // 按照斐波那契数列初始化前两个数for (int i = 2; i <= n; i++) {dp[i] = dp[i - 1] + dp[i - 2]; // 递推公式}return dp[n];}
};

题目链接:70. 爬楼梯

思路

        1阶有1中方法,2阶有两种方法,3阶则是可以从1阶或者2阶走上来,从1或者2走上来总共3种方法。递推下去,发现与斐波那契数列相同,只是该题的0阶并无含义。对求斐波那契数列的代码进行状态压缩,因为每次求值只跟前两个状态有关,因此只需要三个变量,而不是一个数组。

代码

class Solution {
public:int climbStairs(int n) {if (n <= 2)return n;int dp1 = 1; // 一阶台阶int dp2 = 2; // 二阶台阶int result = 0;for (int i = 3; i <= n; i++) {result = dp1 + dp2; // 递推公式dp1 = dp2;          // 更新dp2 = result;}return result;}
};

题目链接:746. 使用最小花费爬楼梯

思路

        使用最小消费爬楼梯

        1.dp[i]数组含义为到第i阶台阶所需要花费多少

        2.递推公式dp[i] = min(dp[i-1]+cost[i-1], [dp[i-2]+cost[i-2])

        3.根据题意和dp数组含义,可知在下标为0或1时不需要花费体力,因此dp[0]=0,dp[1]=0

        4.遍历顺序,从前向后

        5.如果有bug,打印dp数组debug

代码

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {vector<int> dp(cost.size() + 1); // 到第i阶的所有花费dp[0] = 0;                       // 0或1阶不需要花费dp[1] = 0;for (int i = 2; i <= cost.size(); i++) {// 递推公式,每次取最小花费dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);}return dp[cost.size()]; // 返回最小花费}
};

总结

        ①动态规划的第一天,基础知识种的五部曲很重要

        ②今天的题都是入门题目,较为简单,但也是看视频讲解后做的

        ③还是不能依赖核心代码模式,一是在ACM模式下不知道怎么下手,二是不好debug

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/4063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echarts地图叠加百度地图底板实现数据可视化

这里写自定义目录标题 echarts地图叠加百度地图实现数据可视化echarts地图叠加百度地图实现数据可视化 实现数据可视化时,个别情况下需要在地图上实现数据的可视化,echarts加载geojson数据可以实现以地图形式展示数据,例如分层设色或者鼠标hover展示指标值,但如果要将echa…

React 之 组件模块依赖

导入&#xff08;Import&#xff09;和导出&#xff08;exporing&#xff09;组件 在一个文件中声明多个组件&#xff0c;但是文件变得太大的话就不方便查看了。要解决此问题&#xff0c;你可以将一个组件放到一个单独的文件中并&#xff08;导出&#xff09; export 组件&…

运筹系列91:vrp算法包PyVRP

1. 介绍 PyVRP使用HGS&#xff08;hybrid genetic search&#xff09;算法求解VRP类问题。在benchmark上的评测结果如下&#xff0c;看起来还不错&#xff1a; 2. 使用例子 2.1 CVRP COORDS [(456, 320), # location 0 - the depot(228, 0), # location 1(912, 0), …

C++进阶之路——关键字

C进阶——关键字 本系列博客主要对于已经有一定C/C基础的网友&#xff0c;欢迎志同道合的朋友来进行纯粹的技术交流&#xff01;&#xff01;&#xff01; 一、const 在C中&#xff0c;const 关键字是一个非常重要的特性&#xff0c;用于定义变量或对象的值为常量&#xff0c;…

通往AGI路上,DPU将如何构建生成式AI时代的坚实算力基石?

4月19日&#xff0c;在以“重构世界 奔赴未来”为主题的2024中国生成式AI大会上&#xff0c;中科驭数作为DPU新型算力基础设施代表&#xff0c;受邀出席了中国智算中心创新论坛&#xff0c;发表了题为《以网络为中心的AI算力底座构建之路》主题演讲&#xff0c;勾勒出在通往AGI…

Xcode 15构建问题

构建时出现的异常&#xff1a; 解决方式&#xff1a; 将ENABLE_USER_SCRIPT_SANDBOXING设为“no”即可&#xff01;

GateWay具体的使用!!!

一、全局Token过滤器 在Spring Cloud Gateway中&#xff0c;实现全局过滤器的目的是对所有进入系统的请求或响应进行统一处理&#xff0c;比如添加日志、鉴权等。下面是如何创建一个全局过滤器的基本步骤&#xff1a; 步骤1: 创建过滤器类 首先&#xff0c;你需要创建一个实现…

表---商场 nine

CREATE TABLE gao25 (id int(11) NOT NULL AUTO_INCREMENT COMMENT 自增ID,shopId int(11) NOT NULL COMMENT 店铺ID,goodsId int(11) NOT NULL COMMENT 商品ID,attrId int(11) NOT NULL COMMENT 属性名称,attrVal text NOT NULL COMMENT 属性值,createTime datetime NOT NULL …

实验 1--SQL Server2008数据库开发环境

文章目录 实验 1--SQL Server2008数据库开发环境2.4.1 实验目的2.4.2 实验准备2.4.3 实验内容1.利用 SSMS 访问系统自带的Report Server 数据库。2.熟悉了解 SMSS对象资源管理器树形菜单相关选择项的功能。(1)右键单击数据库Report Server&#xff0c;查看并使用相关功能;(2)选…

scp用法

scp常用参数&#xff1a; 命令选项 含义 -1 使用ssh协议版本1 -2 使用ssh协议版本2 -4 使用ipv4 6 使用ipv6 -B 以批处理模式运行 -C 使用压缩 -F 指定ssh配置文件 -l 指定带宽限制 -o 指定使用的ssh选项 -P 指定远程主机的端口号 -p 保留…

[C++基础学习]----02-C++运算符详解

前言 C中的运算符用于执行各种数学或逻辑运算。下面是一些常见的C运算符及其详细说明&#xff1a;下面详细解释一些常见的C运算符类型&#xff0c;包括其原理和使用方法。 正文 01-运算符简介 算术运算符&#xff1a; a、加法运算符&#xff08;&#xff09;&#xff1a;对两个…

基于openwrt交叉编译opencv4.9.0版本

源码包的获取 源码获取有两种方式&#xff0c;一种是通过编译时在makefile指定它的git地址&#xff0c;在编译时下载&#xff0c;这种很依赖网速&#xff0c;网速不好时&#xff0c;编译会失败。另一种是我们将源码的压缩包下载到本地&#xff0c;放到我们的SDK中&#xff0c;…

以场景驱动CMDB数据治理经验分享

数据治理是 CMDB 项目实施中难度最大、成本最高的环节&#xff0c;是一个长期治理的过程&#xff0c;而行业很少提出 CMDB 数据治理的技术实现方案。CMDB 数据治理不仅需要解决配置管理工程性的技术问题&#xff0c;还要基于运维组织的特点&#xff0c;建立适应性的配置运营能力…

DS进阶:并查集

一、并查集的原理 在一些应用问题中&#xff0c;需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这…

SCSS全局配置 vue项目(二)

目录 1、先要查看node版本 2、安装对应的node-sass、sass-loader版本 2.1根据项目使用的node版本安装对应的node-sass版本 2.2根据node-sass版本选择兼容的sass-loader版本&#xff0c;不然项目无法正常运行 3、在 vue.config.js 中配置&#xff1a; 4、在组件中…

深入浅出掌握CSS选择器

CSS选择器是CSS规则的核心组成部分&#xff0c;它们犹如一把钥匙&#xff0c;帮助开发者精准锁定并装饰HTML文档中的各类元素。正确理解和熟练运用CSS选择器&#xff0c;能够极大提升代码效率和页面表现力。本文将系统全面地剖析CSS选择器的种类、用途及应用场景&#xff0c;并…

国家级会议报道:贝锐蒲公英异地组网高效实现前方数据回传

作为市委宣传部的国有新闻媒体&#xff0c;在日常工作中会派遣大量人员外出进行采访、报道&#xff0c;还经常面临国家级重要会议或活动的报道任务。 在这些工作中&#xff0c;前方人员往往需要和后方人员协同、保证内容的时效性&#xff0c;及时反馈现场的相关资料和信息、访…

FSRCNN:加速超分辨率卷积神经网络,SRCNN的加速版

paper&#xff1a;https://arxiv.org/pdf/1608.00367 code: https://github.com/yjn870/FSRCNN-pytorch/tree/master 目录 1. 动机 2. 方法 3. 代码对比 4. 实验结果 1. 动机 作者此前提出的SRCNN证明了CNN在图像超分领域的有效性。然而&#xff0c;SRCNN计算效率较低&#…

PHP EOF(heredoc) 使用说明

在PHP中&#xff0c;EOF&#xff08;End Of File&#xff09;或heredoc是一种定义字符串的方法&#xff0c;它允许你跨越多行来定义字符串&#xff0c;而无需使用大量的引号或字符串连接符。这在编写多行文本、SQL查询或HTML内容时特别有用。 使用heredoc的基本语法如下&#…

​可视化大屏C位图:城市地图,一览城市全貌信息。

城市地图是一种常见的可视化大屏C位图&#xff0c;用于展示城市的地理分布和相关数据。以下是对城市地图的解读&#xff1a; 地理分布 城市地图可以展示不同地理区域的城市分布情况。通过地图上的点、标记或区域着色等方式&#xff0c;可以清晰地看到城市的位置和分布范围。这…