代码随想录|Day32|动态规划01|509.斐波那契数列、70.爬楼梯、746.使用最小花费爬楼梯

news2024/11/20 4:23:04

509.斐波那契数列

动规五步曲:

  1. 确定 dp[i] 含义:第 i 个斐波那契数值为 dp[i]
  2. 递推公式:dp[i] = dp[i - 1] + dp[i - 2]
  3. dp数组初始化:dp[0] = dp[1] = 1
  4. 遍历顺序:从前向后
  5. 打印dp数组
class Solution:
    def fib(self, n: int) -> int:
        # 如果 n==0,
        # 那么dp会被初始化为1个元素长,
        # 导致初始化前2个元素的时候报错。
        if n == 0:
            return 0
        dp = [0] * (n + 1)  # n 表示 第 n+1 个斐波那契数(可以自己写一个数列数一数)
        dp[0], dp[1] = 0, 1
        # 循环从 第3个 数开始,第n+1个 数结束
        # 也就是说,下标从 2 开始,n 结束
        for i in range(2, n + 1):
            dp[i] = dp[i - 1] + dp[i - 2]

        return dp[n]

70.爬楼梯

1阶:1种:1台阶

2阶:2种:1台阶2次;2台阶1次

3阶:3种:1台阶3次;1台阶1次+2台阶1次;2台阶1次+1台阶2次

对于3阶,可以从1阶或者2阶爬1次到达,也就是说3阶 = 1阶 + 2阶 = 1 + 2 = 3。

动规五步曲:

  1. 确定 dp[i] 含义:爬到第 i 阶台阶有 dp[i] 种方法
  2. 递推公式:dp[i] = dp[i - 1] + dp[i - 2]
  3. dp数组初始化:dp[1] = 1, dp[2] = 2(本题要求 n > 0)
  4. 遍历顺序:从前到后
  5. 打印dp数组

class Solution:
    def climbStairs(self, n: int) -> int:
        if n == 1:
            return 1
        dp = [0] * (n + 1)
        dp[1] = 1
        dp[2] = 2

        for i in range(3, n+1):
            dp[i] = dp[i - 1] + dp[i - 2]
        return dp[n]

746.使用最小花费爬楼梯

动规五步曲:

  1. 确定 dp[i] 含义:爬到第 i 阶台阶需要的花费为 dp[i]
  2. 递推公式:dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])。到达 dp[i] 有两种方法(从dp[i - 1]跨1步,或者从dp[i - 2]跨2步),两者花费不同,我们选择最小花费。
  3. dp数组初始化:dp[0] = 0, dp[0] = 0。题意表示我们可以自由选择从下标为 0 或下标为 1 的台阶开始爬楼梯。从某台阶开始是不需要花费的,而攀爬需要花费。
  4. 遍历顺序:从前到后
  5. 打印dp数组
class Solution:
    def minCostClimbingStairs(self, cost: List[int]) -> int:
        # 需要注意的是,根据题意,顶楼为台阶数+1
        dp = [0] * (len(cost) + 1)
        dp[0], dp[1] = 0, 0
        
        for i in range(2, len(cost) + 1):
            dp[i] = min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2])

        return dp[-1]

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

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

相关文章

1.Spring Boot框架整合

Spring Boot项目创建&#xff08;约定大于配置&#xff09; 2.1.3.RELEASE版本示例 idea创建 从官网下载&#xff08;https://start.spring.io/&#xff09;单元测试默认依赖不对时&#xff0c;直接删除即可 Web支持&#xff08;SpringMVC&#xff09; <dependency>&…

在线考试|基于Springboot的在线考试管理系统设计与实现(源码+数据库+文档)

在线考试管理系统目录 目录 基于Springboot的在线考试管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、前台&#xff1a; 2、后台 管理员功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主…

FFmpeg与zlmedikit流媒体服务器

流媒体服务器 zlmediakit 运行流媒体服务器后的日志&#xff0c;可以看到rtsp默认端口554&#xff0c;rtmp默认端口&#xff1a;1935&#xff0c;http默认端口&#xff1a;80&#xff0c; FFmpeg rtsp推流 ffmpeg -re -stream_loop -1 -i “1.mp4” -vcodec h264 -acodec …

神经网络汇聚层

文章目录 最大汇聚层平均汇聚层自适应平均池化层 最大汇聚层 汇聚窗口从输入张量的左上角开始&#xff0c;从左往右、从上往下的在输入张量内滑动。在汇聚窗口到达的每个位置&#xff0c;它计算该窗口中输入子张量的最大值或平均值。计算最大值或平均值是取决于使用了最大汇聚…

Vue 样式技巧总结与整理[中级局]

SFC&#xff08;单文件组件&#xff09;由 3 个不同的实体组成&#xff1a;模板、脚本和样式。三者都很重要&#xff0c;但后者往往被忽视&#xff0c;即使它可能变得复杂&#xff0c;且经常导致挫折和 bug。 更好的理解可以改善代码审查并减少调试时间。 这里有 7 个奇技淫巧…

光猫桥接模式详细步骤

目录 一、前言 路由模式 &#xff08;宽带默认&#xff09; 桥接模式 二、桥接模式步骤 &#xff08;一&#xff09;图片记录备份 设备信息图 网络侧信息 远程管理密码 宽带上网设置 &#xff08;二&#xff09;桥接模式开始 光猫设置 路由器设置 一、前言 重点&a…

vue-cli打包 nodejs内存溢出 vue2.x Last few GCs

遇到这种情况百度各种博客&#xff0c;什么改package.json里的配置&#xff0c;什么安装increase-memory-limit &#xff0c;都尝试了并没什么用处&#xff0c;最后解决方案为执行下方名单&#xff0c;再次打包就成功了&#xff1a; export NODE_OPTIONS--max_old_space_size4…

(源码+部署+讲解)基于Spring Boot和Vue的大学生快递代取服务平台的设计与实现

一、引言 本报告旨在详细阐述基于Spring Boot后端框架和Vue前端框架的大学生快递代取服务平台的设计与实现过程。该平台旨在为大学生提供便捷的快递代取服务&#xff0c;解决因时间冲突或距离过远而无法及时取件的问题。通过该平台&#xff0c;用户可以发布代取需求&#xff0c…

十个排序算法

目录 冒泡排序(Bubble Sort) 选择排序(Select Sort) 插入排序&#xff08;InsertSort&#xff09; 希尔排序&#xff08;ShellSort&#xff09; 计数排序&#xff08;CountSort&#xff09; 快速排序&#xff08;QuickSort&#xff09; 归并排序&#xff08;Merge Sort&a…

【注册中心】ZooKeeper

文章目录 概述Zookeeper的应用场景Zookeeper的角色Zookeeper 的数据模型zookeeper客户端常用命令Zookeeper的核心功能Zookeeper的架构与集群规则Zookeeper的工作模式Zookeeper如何实现分布式锁Zookeeper JavaAPI&#xff08;Curator&#xff09;来源 概述 Zookeeper 是一个开源…

牛市股票还会亏钱?--外观模式

1.1 牛市股票还会亏钱&#xff1f; 炒股&#xff0c;碰到熊市&#xff0c;亏得一塌糊涂。 "我们公司的人现在都在炒股票&#xff0c;其实大部分人都不太懂&#xff0c;就是因为现在股市行情很火&#xff0c;于是都在跟风呢&#xff01;" 刚入市的人&#xff0c;什么都…

二分答案(砍树,借教室)

二分的两种情况附代码&#xff1a; 二分查找条件&#xff1a;单调&#xff0c;二段性 例题1&#xff1a;P1873 [COCI 2011/2012 #5] EKO / 砍树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 上代码&#xff1a; #include<bits/stdc.h> using namespace std; const …

【51单片机入门记录】A/D D/A转换器概述

目录 一、A/D D/A转换器简介 &#xff08;1&#xff09;模数转换器-ADC &#xff08;analogue-to-digital conversion&#xff09; &#xff08;2&#xff09;数模转换器-DAC&#xff08;digital-to-analogue conversion&#xff09; &#xff08;3&#xff09;应用场景 二…

ruoyi-nbcio-plus基于vue3的flowable流程元素选择区面板的升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

Web Component 组件库有什么优势

前言 前端目前比较主流的框架有 react&#xff0c;vuejs&#xff0c;angular 等。 我们通常去搭建组件库的时候都是基于某一种框架去搭建&#xff0c;比如 ant-design 是基于 react 搭建的UI组件库&#xff0c;而 element-plus 则是基于 vuejs 搭建的组件库。 可能你有这种体…

R语言数据操纵:如何构建子集

目录 向量的子集 矩阵的子集 数据框的子集 列表的子集 如何处理缺失值 向量化操作 构建子集的基本方法&#xff1a; 1.使用[]提取一个或多个类型相同的元素 2.使用[[]]从列表或者数据框中提取元素 3.使用$按名字从列表或数据框中提取元素 向量的子集 比如有一个向量…

ssm基于面向对象的学生事务处理系统分析与设计论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本学生事务处理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

java算法day44 | 动态规划part06 ● 完全背包 ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ

完全背包理论基础 完全背包和01背包问题唯一不同的地方就是&#xff0c;每种物品有无限件。 体现在代码中就是对背包的遍历顺序不同。01背包是逆序遍历背包&#xff0c;完全背包是顺序遍历背包。 518. 零钱兑换 II class Solution {public int change(int amount, int[] coin…

银行业架构网络BIAN (Banking IndustryArchitecture Network)详细介绍

BIAN ( The Banking Industry Architecture Network) 是一个业界多方协作的非营利性组织&#xff0c;由全球领先银行、技术提供商、顾问和学者组成&#xff0c;定义了一个用以简化和标准化核心银行体系结构的银行技术框架。这一框架基于面向服务的架构 (SOA) 原则&#xff0c;银…