【Day28 LeetCode】动态规划DP

一、动态规划DP

动态规划中每一个状态一定是由上一个状态推导出来的,所以关键是确定状态转移方程。一般dp问题需要明确一下几点:dp数组及下标的含义、状态转移方程(dp方程)、dp数组初始化、根据dp方程确定遍历顺序

1、斐波那契数 509

简单,斐波那契数列的表达式就是dp方程。

class Solution {
public:int fib(int n) {if(n <= 1)return n;int pre = 0, cur = 1;while(--n){int tmp = cur;cur += pre;pre = tmp;}return cur;}
};

2、爬楼梯 70

与上一题斐波那契数列类似,不过这题初始化条件不一样。

class Solution {
public:int climbStairs(int n) {int pre = 1, cur = 1;for(int i=2; i<=n; ++i){int tmp = cur;cur += pre;pre = tmp;}return cur;}
};

3、使用最小花费爬楼梯 746

这题与爬楼梯相似,dp方程dp[i]表示到达当前第i个台阶所需的花费,dp方程为dp[i] = min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2])。初始化为dp[0]=dp[1]=0,因为可以从第0个或者第1个台阶出发。明确了初始化和转移方程,解决这类问题就很简单。

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();vector<int> dp(n+1, 0); // dp数组for(int i=2; i<=n; ++i){dp[i] = min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2]);}return dp[n];}
};

空间优化版本如下:

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int pre = 0, cur = 0;for(int i=2; i<=cost.size(); ++i){int tmp = cur;cur = min(cur + cost[i-1], pre + cost[i-2]);pre = tmp;}return cur;}
};

二、写在后面

今天是dp简单的题目,主要是用来明确上面提到的那几点:dp数组及下标的含义、状态转移方程(dp方程)、dp数组初始化、根据dp方程确定遍历顺序

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

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

相关文章

PyQt6医疗多模态大语言模型(MLLM)实用系统框架构建初探(下.代码部分)

医疗 MLLM 框架编程实现 本医疗 MLLM 框架结合 Python 与 PyQt6 构建,旨在实现多模态医疗数据融合分析并提供可视化界面。下面从数据预处理、模型构建与训练、可视化界面开发、模型 - 界面通信与部署这几个关键部分详细介绍编程实现。 6.1 数据预处理 在医疗 MLLM 框架中,多…

Linux-day10

第21章 Linux高级篇-日志管理 日志介绍和实例 基本介绍 系统常用的日志 日志服务 日志服务原理图 在这个配置文件里面记录了日志服务程序 日志管理服务rsyslogd -v是反向匹配 invert 日志服务配置文件 时间、主机、是由哪个程序或者服务发生的、事件信息 自定义日志服务 日…

Linux第一讲--基本的命令操作

从今天开始&#xff0c;我将在csdn这个平台上和大家分享Linux的相关知识&#xff0c;欢迎大家一起讨论&#xff01; 零、基本操作 1.进入全屏&#xff1a; ALTENTER,退出也是这个 2.复制&#xff1a;ctrlinsert 3.粘贴&#xff1a;shiftinsert Linux中&#xff0c;cv是不好…

WinRAR.exe命令行的使用

工具 命令行打包命令 rem 默认压缩根目录&#xff0c;递归处理子文件夹使用 -r WinRAR.exe a -r test.rar C:/web/Views/

### 2.5.3 二叉树的基本操作

2.5.3 二叉树的基本操作 // 获取树中节点的个数 int size(Node root);// 获取叶子节点的个数 int getLeafNodeCount(Node root);// 子问题思路-求叶子结点个数// 获取第K层节点的个数 int getKLevelNodeCount(Node root,int k);// 获取二叉树的高度 int getHeight(Node root);…

设计新的 Kibana 仪表板布局以支持可折叠部分等

作者&#xff1a;来自 Elastic Teresa Alvarez Soler, Hannah Mudge 及 Nathaniel Reese 在 Kibana 中构建可折叠仪表板部分需要彻底改造嵌入式系统并创建自定义布局引擎。这些更新改进了状态管理、层次结构和性能&#xff0c;同时为新的高级仪表板功能奠定了基础。 我们正在开…

怎么样把pdf转成图片模式(不能复制文字)

贵但好用的wps&#xff0c; 转换——转为图片型pdf —————————————————————————————————————————— 转换前&#xff1a; 转换后&#xff1a; 肉眼可见&#xff0c;模糊了&#xff0c;且不能复制。 其他免费办法&#xff0c;参考&…

PAT甲级-1023 Have Fun with Numbers

题目 题目大意 一个数乘以2倍后&#xff0c;仍由原来的数字组成&#xff0c;只不过顺序发生变化&#xff0c;就输出Yes&#xff0c;否则输出No。并输出乘以2部后的数。 思路 题目说数字不超过20位&#xff0c;long long最多只能表示19位&#xff0c;93....&#xff0c;超过其…

系统架构设计师教材:信息系统及信息安全

信息系统 信息系统的5个基本功能&#xff1a;输入、存储、处理、输出和控制。信息系统的生命周期分为4个阶段&#xff0c;即产生阶段、开发阶段、运行阶段和消亡阶段。 信息系统建设原则 1. 高层管理人员介入原则&#xff1a;只有高层管理日恩怨才能知道企业究竟需要什么样的…

CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据)

CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测&#xff08;Matlab完整源码和数据&#xff09; 目录 CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测&#xff08;Matlab完整源码和数据&#xff09;预测效果基本介绍 CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测一…

我谈区域偏心率

偏心率的数学定义 禹晶、肖创柏、廖庆敏《数字图像处理&#xff08;面向新工科的电工电子信息基础课程系列教材&#xff09;》P312 区域的拟合椭圆看这里。 Rafael Gonzalez的二阶中心矩的表达不说人话。 我认为半长轴和半短轴不等于特征值&#xff0c;而是特征值的根号。…

每日进步一点点(网安)

1.1 level5 查看源码关键部分 $str strtolower($_GET["keyword"]); $str2str_replace("<script","<scr_ipt",$str); $str3str_replace("on","o_n",$str2);<input namekeyword value".$str3.">关键…

centos操作系统上以service形式运行blackbox_exporter监控网页端口

文章目录 前言一、blackbox_exporter是什么二、使用步骤1.获取二进制文件2.准备部署脚本3.执行命令&#xff0c;进行部署4.prometheus中增加需要监控页面的job信息 三、查看部署结果四、配置到grafana中总结 前言 记录一下centos操作系统上以简单的service形式运行blackbox_ex…

【阅读笔记】基于图像灰度梯度最大值累加的清晰度评价算子

本文介绍的是一种新的清晰度评价算子&#xff0c;基于图像灰度梯度最大值累加 一、概述 目前在数字图像清晰度评价函数中常用的评价函数包括三类&#xff1a;灰度梯度评价函数、频域函数和统计学函数&#xff0c;其中灰度梯度评价函数具有计算简单&#xff0c;评价效果好等优…

数据库设计

七、存储管理 1、存储介质 存储层次 存储分类 访问速度分类&#xff1a;主存储器、二级存储器、三级存储器操作分类&#xff1a;读操作、写操作联机分类&#xff1a;联机、脱机访问方式分类&#xff1a;随机访问、顺序访问读写单位分类&#xff1a;字节、块 存储介质分类 易…

到华为考场考HCIE的注意事项和考试流程

大家好&#xff0c;我是张同学&#xff0c;来自成都职业技术学院2021级计算机网络专业。最近成功通过了 Datacom HCIE 考试&#xff0c;在这里和大家分享一下我的经验。 考证契机 在母校的培养下&#xff0c;我接触到ICT这个行业&#xff0c;打好了基础&#xff0c;开始了成…

海外问卷调查如何影响企业的经营?在品牌建设中有何指导意义?

市场调查的定义&#xff1a;通过科学的方法&#xff0c;有目的地、系统地搜集整理一些市场信息&#xff0c;其目的在于了解当下市场现状和发展前景&#xff0c;为企业生产和品牌打造提供一些科学的指导意见&#xff0c;这是任何大企业、中小企业、初创企业都必须重视的一个重要…

hedfs和hive数据迁移后校验脚本

先谈论校验方法&#xff0c;本人腾讯云大数据工程师。 1、hdfs的校验 这个通常就是distcp校验&#xff0c;hdfs通过distcp迁移到另一个集群&#xff0c;怎么校验你的对不对。 有人会说&#xff0c;默认会有校验CRC校验。我们关闭了&#xff0c;为什么关闭&#xff1f;全量迁…

Unity3D仿星露谷物语开发25之创建时钟界面

1、目标 在时钟界面显示当前时钟信息&#xff0c;同时设置特殊按钮可以快速推进时间用于测试。 2、创建GameClock.cs脚本 在Assets -> Scripts -> TimeSystem目录下创建GameClock.cs脚本。 代码如下&#xff1a; using System.Collections; using System.Collections…

使用Vue3实现可拖拽的九点导航面板

开篇 本文使用Vue3实现了一个可拖拽的九宫导航面板。这个面板在我这里的应用场景是我个人网站的首页的位置&#xff0c;九宫导航对应的是用户最后使用或者最多使用的九个功能&#xff0c;正常应该是由后端接口返回的&#xff0c;不过这里为了简化&#xff0c;写的是固定的数组数…