【代码随想录_Day27】509 斐波那契数 70 爬楼梯 746 使用最小花费爬楼梯

Day27 OK,今日份的打卡!第二十七天

  • 以下是今日份的总结
    • 斐波那契数
    • 爬楼梯
    • 使用最小花费爬楼梯

以下是今日份的总结

509 斐波那契数
70 爬楼梯
746 使用最小花费爬楼梯

今天的题目难度不高,掌握技巧了就会很简单,尽量还是写一些简洁代码 ^ _ ^

斐波那契数

思路:

1.确定dp数组以及下标的含义
------ dp[i]的定义为:第i个数的斐波那契数值是dp[i]
2.确定递推公式
------dp[i] = dp[i - 1] + dp[i - 2];
3.dp数组如何初始化
------dp[0] = 0;
------dp[1] = 1;
4.确定遍历顺序
------从递归公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的
5.举例推导dp数组
------当N为10的时候, 0 1 1 2 3 5 8 13 21 34 55

值得注意的是

只需要维护两个数值就可以了,不需要记录整个序列。

    int fib(int n) {vector<int> dp(n+1);if(n<2) return n;dp[0] = 0;dp[1] = 1;for(int i = 2;i <= n; i++){dp[i] = dp[i-1] + dp[i-2];}return dp[n];}
    int fib(int n) {if(n<2) return n;int dp[2];dp[0] = 0;dp[1] = 1;for(int i = 2; i<=n;i++){int sum = dp[0] + dp[1];dp[0] = dp[1];dp[1] = sum ; }return dp[1];}

爬楼梯

思路:

和上一题表现形式差不多
1.确定dp数组以及下标的含义
------ dp[i]: 爬到第i层楼梯,有dp[i]种方法
_
2.确定递推公式
------首先是dp[i - 1],上i-1层楼梯,有dp[i - 1]种方法,那么再一步跳一个台阶不就是dp[i]了么。
------还有就是dp[i - 2],上i-2层楼梯,有dp[i - 2]种方法,那么再一步跳两个台阶不就是dp[i]了么。
------dp[i] = dp[i - 1] + dp[i - 2];
_
3.dp数组如何初始化
------dp[0] = 0;//这一步实际上并不重要
------dp[1] = 1;
------dp[2] = 2;
_
4.确定遍历顺序
------从递归公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的
_
5.举例推导dp数组
------当N为10的时候, 0 1 2 3 5 8 13 21 34 55
界不揍是斐波那契数列嘛!!

值得注意的是

和上题一样

    int climbStairs(int n) {if(n<2) return n;vector<int>dp(n+1);dp[0] = 0;dp[1] = 1;dp[2] = 2;for(int i = 3;i <=n ;i++){dp[i] = dp[i-1] + dp[i-2];}return dp[n];}

使用最小花费爬楼梯

思路:

1.确定dp数组以及下标的含义
------ dp[i]的定义:到达第i台阶所花费的最少体力为dp[i]。
2.确定递推公式
------可以有两个途径得到dp[i],一个是dp[i-1] 一个是dp[i-2]。
------dp[i - 1] 跳到 dp[i] 需要花费 dp[i - 1] + cost[i - 1]。
------dp[i - 2] 跳到 dp[i] 需要花费 dp[i - 2] + cost[i - 2]。
------那么究竟是选从dp[i - 1]跳还是从dp[i - 2]跳呢?
------一定是选最小的,所以dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
3.dp数组如何初始化
------到达 第 0 个台阶是不花费的,但从 第0 个台阶 往上跳的话,需要花费 cost[0]
------又因为题目允许上一层或者两层,所以
------dp[0] = 0;
------dp[1] = 0;
4.确定遍历顺序
------dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的
5.举例推导dp数组
------cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1] 楼顶
------下标 0 1 2 3 4 5 6 7 8 9 10
------dp = [0,0,1,2,2,3,3,4,4,5,6]

值得注意的是

和上题一样

    int minCostClimbingStairs(vector<int>& cost) {vector<int> dp(cost.size() + 1);dp[0] = 0; // 默认第一步不需要花费体力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()];//到楼顶的花费的体力值}

写在最后

----OK,今日份的博客就写到这里,这一期的动态规划好巧妙,明天继续加油!!!
—还没看下期的题,但是我的栈还有一节没写;
–追上时间进度了!!(笑
-该丢的都丢掉,然后闪亮的飞速奔向远方。

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

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

相关文章

白嫖A100活动来啦,书生·浦语大模型全链路开源体系

扫码参加即可获得&#xff1a; 第一节 书生浦语大模型全链路开源体系 书生浦语大模型的开源历程。 从模型到应用的典型流程 书生浦语的开源体系&#xff0c;包含从数据、预训练、微调、部署、评测、应用等环节

CC4利用链分析

我的Github主页Java反序列化学习同步更新&#xff0c;有简单的利用链图 分析版本 Commons Collections 4.0 JDK 8u65 环境配置参考JAVA安全初探(三):CC1链全分析 分析过程 在Commons Collections 4.0中&#xff0c;TransformingComparator类变为可序列化类&#xff0c;增…

Java学习高级二

Java是单继承的 Object类 方法重写 Java子类访问 – 就近原则 子类构造器的特点 多态 Java–final

机器学习之模型训练

前言 模型训练一般分为四个步骤&#xff1a; 构建数据集。定义神经网络模型。定义超参、损失函数及优化器。输入数据集进行训练与评估。 有了数据集和模型后&#xff0c;可以进行模型的训练与评估。 构建数据集 定义神经网络模型 class Network(nn.Cell):def __init__(sel…

WPF更新UI线程实现进度条功能

WPF更新UI线程实现进度条功能 我的写法 <Page x:Class"CableInspectionScreen.ConfigPage"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc"http:/…

AtCoder Beginner Contest 360

A - A Healthy Breakfast 枚举一下&#xff0c;只要R在M之前就行了 #include <iostream>using namespace std;int main() {char a,b,c;cin >> a >> b >> c;if((a R && (b M || c M)) || (b R && c M)){cout << "Yes…

OpenSNN推文:个人博客站点文章汇总:大模索型时代,ESM-AA,Victoria Metrics

产学研专家共论道&#xff01;探大模索型时代数据要素流通突围之道&#xff0c;「隐语城市行开源两周年特别活动」报名开启 2024年7月3日 segmentfault思否 简介&#xff1a;随着 “数据二十条”等引导或规范数据要素流通的政策文件落地&#xff0c;包含隐私计算、AI 大模型…

论文阅读:A Survey on Evaluation of Large Language Models

A Survey on Evaluation of Large Language Models 这篇论文是由Yupeng Chang等人撰写的关于大型语言模型&#xff08;LLMs&#xff09;评估的综述&#xff0c;题为《A Survey on Evaluation of Large Language Models》。 摘要 大型语言模型&#xff08;LLMs&#xff09;在…

【trition-server】运行一个pytorch的ngc镜像

ngc 提供了pytorch容器 号称是做了gpu加速的 我装的系统版本是3.8的python,但是pytorch似乎是用conda安装的3.5的: torch的python库是ls支持gpu加速是真的 英伟达的pytorch的说明书 root@a79bc3874b9d:/opt/pytorch# cat NVREADME.md PyTorch ======= PyTorch is a python …

为什么gpt模型输入的token最大数量被限制在几万,是有技术问题吗?

既是技术问题&#xff0c;也是算力问题。 算力问题很容易理解&#xff0c;GPT4大概率还是用Transformer模型。Transformer如果经过各种Linear技术的优化&#xff08;如Sparse&#xff09;&#xff0c;那么Scaling Law难以保证&#xff1b;如果保持原样&#xff0c;那么复杂度是…

深入理解Java中的Lambda表达式与函数式接口

深入理解Java中的Lambda表达式与函数式接口 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. Lambda表达式的基础 Lambda表达式是Java 8引入的一个重要特性&#xff0c;它使得Java的函数式编程更…

vivado DIFF_TERM_ADV

DIFF_TERM_ADV 高级差分终止&#xff08;DIFF_TERM_ADV&#xff09;属性用于 UltraScale体系结构&#xff0c;用于启用或禁用内置的100Ω差分 用于输入或双向端口的端接。DIFF_TERM_ADV表示差 应在差分输入和双向端口缓冲器上使用终止方法&#xff0c;以及 Vivado Design Suite…

嵌入式C语言面试相关知识——CPU、进程和线程相关(相关问题很多,会经常过来更新)

嵌入式C语言面试相关知识——CPU、进程和线程相关 一、博客声明二、自问题目——CPU相关1、什么是中断&#xff1f;如何处理中断&#xff1f;2、解释上下文切换(Context Switch)&#xff1f;3、在嵌入式中如何优化CPU使用&#xff1f; 三、自问题目——进程相关1、什么是进程&a…

顶会FAST24最佳论文|阿里云块存储架构演进的得与失-1.引言

今年早些时候&#xff0c;2月份举办的全球计算机存储顶会USENIX FAST 2024&#xff0c;最佳论文来自阿里云&#xff0c;论文名称《What’s the Story in EBS Glory: Evolutions and Lessons in Building Cloud Block Store》 &#xff0c;论文详尽地探讨了阿里云在过去十年中开…

EtherCAT主站IGH-- 10 -- IGH之ethernet.h/c文件解析

EtherCAT主站IGH-- 10 -- IGH之ethernet.h/c文件解析 0 预览一 该文件功能`eoe.c` 文件功能函数预览二 函数功能介绍1. `ec_eoe_init`2. `ec_eoe_clear`3. `ec_eoe_send`4. `ec_eoe_run`5. `ec_eoe_queue`6. `ec_eoe_is_open`7. `ec_eoe_is_idle`8. `ec_eoe_name`示例用法示例详…

HTML(28)——空间转换

空间&#xff1a;是从坐标轴角度定义的XYZ三条坐标轴构成了一个立体空间 Z轴位置与视线方向相同 空间转换 平移 属性&#xff1a; transform: translate3d(x,y,z);transform: translateX();transform: translateY();transform: translateZ(); 取值&#xff1a;像素单位数值…

国内教育科技公司自研大语言模型

好未来的数学大模型九章大模型&#xff08;MathGPT&#xff09; 2023年8月下旬&#xff0c;在好未来20周年直播活动中&#xff0c;好未来公司CTO田密宣布好未来自研的数学领域千亿级大模型MathGPT正式上线并开启公测。根据九章大模型的官网介绍&#xff0c;九章大模型&#xff…

python - 函数 / 字典 / 集合

一.函数 形参和实参&#xff1a; >>> def MyFirstFunction(name): 函数定义过程中的name是叫形参 ... print(传递进来的 name 叫做实参&#xff0c;因为Ta是具体的参数值&#xff01;) print前面要加缩进tab&#xff0c;否则会出错。 >>> MyFirstFun…

强化学习(Reinforcement Learning,简称RL)

强化学习&#xff08;Reinforcement Learning&#xff0c;简称RL&#xff09;是一种机器学习范式&#xff0c;它允许智能体&#xff08;agent&#xff09;通过与环境互动来学习如何采取行动&#xff0c;以最大化某种累积奖励。在机器人控制中&#xff0c;强化学习可以用来解决各…

第6天: Web架构篇域名语言中间件数据库系统源码获取

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 操作系统层面简述两者区别以及识别的意义操作系统层面漏洞类型对应意义数据库层面第三方层面 操作系统层面 识别操作系统常见办法 通过网站或者通过扫描工具网站对…