【leetcode详解】爬楼梯:DP入门典例(附DP通用思路 同类进阶练习)

news2024/11/16 9:23:08

实战总结:

vector常用方法:

创建一个长为n的vector,并将所有元素初始化为某一定值x

vector<int> vec(len, x)

代码执行过程中将所有元素更新为某一值x

fill(vec.begin(), vec.end(), x)

// 更多实战方法欢迎参考文章:

【vector】常用实战方法:增删改查(C++入门必看)_vector 增删查改-CSDN博客


题面


DP&记忆化通用思路总结

  • //DP思想:                                寻找与原问题 同类的 更小的子问题
  • //确定更小的同类问题:            可以用递归
  • //发掘大小问题的通用逻辑:     递归函数写什么
    • //递归函数基本构成:
      •         //确定这个递归函数返回什么结果
      •         //递归结束条件
      •         //递归函数主体
  • //什么时候用记忆化:
    • //存在大量重复计算时 <=> 递归函数参数相同,那么结果必然一样  

 AC代码见下,思路已在注释中清晰体现:

class Solution {
public:
    int climbStairs(int n) {
    	vector<int>rem(n+1, 0);
		//rem[i]用来记忆还有i级台阶时有多少种走法
		auto dfs = [&](auto& dfs, int i) -> int{
        //dfs返回:当还有i级台阶要走时,一共有几种走法。

			if(i < 0) return 0;//递归返回条件
			else if(i == 0) return 1;
            else if(rem[i] != 0) return rem[i];
			
            int res = 0;
			res += dfs(dfs, i-1);//最后一步走一级台阶
			res += dfs(dfs, i-2);//还是走两步?
                                 //两种走法相互独立,所以采用加法原理
            rem[i] = res;//记忆化
			return res;	
		};
		return dfs(dfs, n);
    }
};

 进阶DP练习推荐:

【leetcode】T3144 (附DP&记忆化通用思路)-CSDN博客

~希望对你有启发!~

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

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

相关文章

SpringBoot教程(十五) | SpringBoot集成RabbitMq(消息丢失、消息重复、消息顺序、消息顺序)

SpringBoot教程&#xff08;十五&#xff09; | SpringBoot集成RabbitMq&#xff08;消息丢失、消息重复、消息顺序、消息顺序&#xff09; RabbitMQ常见问题解决方案问题一&#xff1a;消息丢失的解决方案&#xff08;1&#xff09;生成者丢失消息丢失的情景解决方案1&#xf…

TensorRT-LLM高级用法

--multi_block_mode decoding phase, 推理1个新token&#xff0c; 平时&#xff1a;按照batch样本&#xff0c;按照head&#xff0c;将计算平均分给所有SM&#xff1b; batch_size*num_heads和SM数目相比较小时&#xff1a;有些SM会空闲&#xff1b;加了--multi_block_mode&…

JavaScript 知识点(从基础到进阶)

&#x1f30f;个人博客主页&#xff1a;心.c ​ 前言&#xff1a;JavaScript已经学完了&#xff0c;和大家分享一下我的笔记&#xff0c;希望大家可以有所收获&#xff0c;花不多说&#xff0c;开干&#xff01;&#xff01;&#xff01; &#x1f525;&#x1f525;&#x1f5…

urllib与requests爬虫简介

urllib与requests爬虫简介 – 潘登同学的爬虫笔记 文章目录 urllib与requests爬虫简介 -- 潘登同学的爬虫笔记第一个爬虫程序 urllib的基本使用Request对象的使用urllib发送get请求实战-喜马拉雅网站 urllib发送post请求 动态页面获取数据请求 SSL证书验证伪装自己的爬虫-请求头…

【redis】数据量庞大时的应对策略

文章目录 为什么数据量多了主机会崩分布式系统应用数据分离架构应用服务集群架构负载均衡器数据库读写分离 引入缓存冷热分离架构 分库分表微服务是什么代价优势 为什么数据量多了主机会崩 一台主机的硬件资源是有上限的&#xff0c;包括但不限于一下几种&#xff1a; CPU内存…

【最新华为OD机试E卷-支持在线评测】猜字迷(100分)-多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…

.hmallox、.rmallox勒索病毒揭秘:如何保护你的数据免受威胁

导言 .hmallox、.rmallox勒索病毒是一种加密型勒索病毒&#xff0c;以其特定的加密机制和传播方式而闻名。它主要通过钓鱼邮件或恶意下载链接感染计算机系统。一旦入侵系统&#xff0c;它会加密受害者的文件&#xff0c;并要求支付赎金以恢复数据。了解 .hmallox 、.rmallox勒…

2024数学建模国赛选题建议+团队助攻资料(已更新完毕)

目录 一、题目特点和选题建议 二、模型选择 1、评价模型 2、预测模型 3、分类模型 4、优化模型 5、统计分析模型 三、white学长团队助攻资料 1、助攻代码 2、成品论文PDF版 3、成品论文word版 9月5日晚18&#xff1a;00就要公布题目了&#xff0c;根据历年竞赛题目…

解决npm i 安装报npm ERR! code E401

1、前端去维护项目时&#xff0c;通过 git clone 下来以后&#xff0c;经常是直接 npm i 去安装项目需要的依赖&#xff0c;但是往往很多项目不是我们自己写的&#xff0c;或者从 GitHub 上面 clone 的开源项目&#xff0c;这个时候出现问题就很难处理&#xff0c;这里分享下安…

java基础-线程实现

文章目录 什么是线程线程的基本特性线程的状态线程的调度 线程的实现方式1. 继承 Thread 类2. 实现 Runnable 接口3. 使用 Callable 和 Future4. 使用 ExecutorService总结 什么是线程 线程&#xff08;Thread&#xff09;是计算机科学中的一个重要概念&#xff0c;它是操作系…

EmguCV学习笔记 C# 9.2 VideoWriter类

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

【数据结构】--初识泛型

1. 包装类 在Java中&#xff0c;由于基本类型不是继承自Object&#xff0c;为了在泛型代码中可以支持基本类型&#xff0c;Java给每个基本类型都对应了一个包装类型。 1.1 基本数据类型和对应的包装类 除了 Integer 和 Character&#xff0c; 其余基本类型的包装类都是首字母…

1051 找矩阵中的鞍点

### 思路 1. 输入一个3行4列的整数矩阵。 2. 遍历每一行&#xff0c;找到每一行的最大值及其列索引。 3. 检查该列索引对应的列中是否是最小值。 4. 如果是&#xff0c;则输出该值&#xff1b;如果没有找到鞍点&#xff0c;输出“NO”。 ### 伪代码 1. 初始化一个3行4列的矩阵…

SLT—List详解

1.list概述 相较于 vector 的连续线性空间&#xff0c;list 就显得复杂很多&#xff0c;它的好处是每次插入或删除一个数据&#xff0c;就配置或释放一个元素空间。因此&#xff0c;list 对于空间的运用有绝对的精准&#xff0c;一点也不浪费。对于任何位置的元素进行插入或者元…

连续信号的matlab表示

复习信号与系统以及matlab 在matlab中连续信号使用较小的采样间隔来表四 1.单位阶跃信号 阶跃信号:一个理想的单位阶跃信号在时间 t 0 之前值为0&#xff0c;在 t 0 及之后值突然变为常数 A&#xff08;通常取 A 1&#xff09; %matlab表示连续信号,是让信号的采样间隔很小…

WebGIS面试题(第九期)

坐标系&#xff1a; 文章目录 **坐标系&#xff1a;**1、如何使用ArcGIS进行GIS坐标系转换&#xff1f;2、Cesium中的Cartesian3坐标系的原点在哪里&#xff1f;它的轴是如何定义的&#xff1f;3、如何在Cesium中使用矩阵进行坐标系转换。4、在Cesium中&#xff0c;如何将屏幕坐…

在VScode上写网页(html)

一、首先点进VScode&#xff0c;下载3个插件。 VScode安装&#xff1a;VScode 教程 | 菜鸟教程 二、新建 HTML 文件 作者运行的代码来自&#xff1a;http://t.csdnimg.cn/vIAQi 把代码复制粘贴进去&#xff0c;然后点击文件→另存为→选择html格式。 三、运行代码

笔试强训,[NOIP2002普及组]过河卒牛客.游游的水果大礼包牛客.买卖股票的最好时机(二)二叉树非递归前序遍历

目录 [NOIP2002普及组]过河卒 牛客.游游的水果大礼包 牛客.买卖股票的最好时机&#xff08;二) 二叉树非递归前序遍历 [NOIP2002普及组]过河卒 题里面给的提示很有用&#xff0c;那个马的关系&#xff0c;后面就注意&#xff0c;dp需要作为long的类型。 import java.util.Sc…

店匠科技携手Stripe共谋电商支付新篇章

在全球电商行业蓬勃发展的背景下,支付环节作为交易闭环的核心,其重要性日益凸显。随着消费者对支付体验要求的不断提高,以及跨境电商的迅猛发展,支付市场正经历着前所未有的变革与挑战。在这一充满机遇与竞争的领域,店匠科技(Shoplazza)凭借其创新的嵌入式支付解决方案—— Sho…

[米联客-XILINX-H3_CZ08_7100] FPGA程序设计基础实验连载-39 HDMI视频输入测试

软件版本&#xff1a;VIVADO2021.1 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用 XILINX A7/K7/Z7/ZU/KU 系列 FPGA 实验平台&#xff1a;米联客-MLK-H3-CZ08-7100开发板 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 http…