当前位置: 首页 > news >正文

爬楼梯问题-从暴力递归到动态规划(java)

爬楼梯,每次只能爬一阶或者两阶,计算有多少种爬楼的情况

  • 爬楼梯--题目描述
  • 暴力递归
  • 递归+缓存
  • 动态规划
  • 暴力递归到动态规划专题

爬楼梯–题目描述

一个总共N 阶的楼梯(N > 0)
每次只能上一阶或者两阶。问总共有多少种爬楼方式。

示例1:
N = 1,
一步上去了,返回1.

示例2:
N = 2时。
可以第一次上一阶,再上一阶,这是一种方式,
也可以一次直接上两阶,这也是一种方式,
返回 2;

示例3:
N = 3:
可以选择, 1 1 1,
1 2
2 1
三种方式上楼,
返回3.

暴力递归

解题思路:
先确认base case:
只有一层台阶时 有1种方式,
只有两层台阶时 有两种方式,
当N 层台阶时,
当前这一步能选择上一层或者上两层两种可能性
因此f(N) = f(N - 1) + f(N - 2)
代码已经呼之欲出了:

代码演示:

  /*** 暴力递归。* @param N* @return*/public static int paLouTi(int N){if (N <= 0){return 0;}return process(N);}/*** N层测楼梯 每次只能上一步或者两步,* 总共有多少种爬楼的方式。* @param N*/public static int process(int N){//base caseif (N == 1 || N == 2){return N;}return process(N - 1) + process(N - 2);}

递归+缓存

解题思路:
第一先找到重复计算的地方。
第二步把重复计算的放进缓存里,记忆化搜索
这个里面的重复计算我们举个例子:
f(5) = f(4) + f(3)
f(4) = f(3) + f(2)
这里面f(3)就在重复计算,
我们把他加进缓存里

代码演示

  /*** 递归加缓存的方式* @param N* @return*/public static int paLouTi2(int N){if (N <= 0){return 0;}int[] ans = new int[N + 1];return process2(N,ans);}/*** 带缓存的递归  记忆化搜索* @param N* @param ans* @return*/public static int process2(int N,int[]ans){//如果有值 直接返回 不在计算if(ans[N] != 0){return ans[N];}if(N == 1 || N == 2){ans[N] = N;}else{ans[N] = process2(N - 1,ans)+process2(N - 2,ans);}return ans[N];}

动态规划

动态规划就是在递归加缓存的基础上,做的改进,我们提前把缓存表计算出来,然后直接从缓存表里取值。

代码演示:

    /*** 动态规划* @param N* @return*/public static int paLouTi3(int N ){if (N < 1){return 0;}//缓存表int[] dp = new int[N + 1];dp[1] = 1;dp[2] = 2;for (int i = 3; i <= N;i++ ){dp[i] = dp[i - 1] + dp[i - 2];}return dp[N];}

暴力递归到动态规划专题

走到指定位置有多少种方式-从暴力递归到动态规划(java)

零钱兑换,凑零钱问题,从暴力递归到动态规划(java)

斐波那契数列-从暴力递归到动态规划

相关文章:

爬楼梯问题-从暴力递归到动态规划(java)

爬楼梯&#xff0c;每次只能爬一阶或者两阶&#xff0c;计算有多少种爬楼的情况 爬楼梯--题目描述暴力递归递归缓存动态规划暴力递归到动态规划专题 爬楼梯–题目描述 一个总共N 阶的楼梯&#xff08;N > 0&#xff09; 每次只能上一阶或者两阶。问总共有多少种爬楼方式。 示…...

浏览器如何验证SSL证书?

浏览器如何验证SSL证书&#xff1f;当前SSL证书应用越来越广泛&#xff0c;我们看见的HTTPS网站也越来越多。点击HTTPS链接签名的绿色小锁&#xff0c;我们可以看见SSL证书的详细信息。那么浏览器是如何验证SSL证书的呢? 浏览器如何验证SSL证书&#xff1f; 在浏览器的菜单中…...

Linux :: 【基础指令篇 :: 文件及目录操作:(10)】:: ll 指令 :: 查看指定目录下的文件详细信息

前言&#xff1a;本篇是 Linux 基本操作篇章的内容&#xff01; 笔者使用的环境是基于腾讯云服务器&#xff1a;CentOS 7.6 64bit。 学习集&#xff1a; C 入门到入土&#xff01;&#xff01;&#xff01;学习合集Linux 从命令到网络再到内核&#xff01;学习合集 目录索引&am…...

Java字符集/编码集

1 字符集/编码集 基础知识 计算机中储存的信息都是用二进制数表示的;我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果 按照某种规则, 将字符存储到计算机中,称为编码。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码。这里强调一下: 按照…...

Apache配置与应用

目录 虚拟web主机httpd服务支持的虚拟主机类型基于域名配置方法基于IP配置方法基于端口配置方法 apache连接保持构建Web虚拟目录与用户授权限制Apache日志分割 虚拟web主机 虚拟Web主机指的是在同一台服务器中运行多个Web站点&#xff0c;其中每一个站点实际上并不独立占用整个…...

API自动化测试【postman生成报告】

PostMan生成测试报告有两种&#xff1a; 1、控制台的模式 2、HTML的测试报告 使用到一个工具newman Node.js是前端的一个组件&#xff0c;主要可以使用它来开发异步的程序。 一、控制台的模式 1、安装node.js 双击node.js进行安装&#xff0c;安装成功后在控制台输入node …...

探索OpenAI插件:ChatWithGit,memecreator,boolio

引言 在当今的技术世界中&#xff0c;插件扮演着至关重要的角色&#xff0c;它们提供了一种简单有效的方式来扩展和增强现有的软件功能。在本文中&#xff0c;我们将探索三个OpenAI的插件&#xff1a;ChatWithGit&#xff0c;memecreator&#xff0c;和boolio&#xff0c;它们…...

linux irq

中断上下部 软中断、tasklet、工作对列 软中断优点&#xff1a;运行在软中断上下文&#xff0c;优先级比普通进程高&#xff0c;调度速度快。 缺点&#xff1a;由于处于中断上下文&#xff0c;所以不能睡眠。 相对于软中断/tasklet&#xff0c;工作对列运行在进程上下文 h…...

串口流控(CTS/RTS)使用详解

1.流控概念 在两个设备正常通信时&#xff0c;由于处理速度不同&#xff0c;就存在这样一个问题&#xff0c;有的快&#xff0c;有的慢&#xff0c;在某些情况下&#xff0c;就可能导致丢失数据的情况。 如台式机与单片机之间的通讯&#xff0c;接收端数据缓冲区已满&#xff0…...

kube-proxy模式详解

1 kube-proxy概述 kubernetes里kube-proxy支持三种模式&#xff0c;在v1.8之前我们使用的是iptables 以及 userspace两种模式&#xff0c;在kubernetes 1.8之后引入了ipvs模式&#xff0c;并且在v1.11中正式使用&#xff0c;其中iptables和ipvs都是内核态也就是基于netfilter&…...

汽车EDI:如何与Stellantis建立EDI连接?

Stellantis 是一家实力雄厚的汽车制造公司&#xff0c;由法国标致雪铁龙集团&#xff08;PSA集团&#xff09;和意大利菲亚特克莱斯勒汽车集团&#xff08;FCA集团&#xff09;合并而成&#xff0c;是世界上第四大汽车制造商&#xff0c;拥有包括标致、雪铁龙、菲亚特、克莱斯勒…...

【SCI征稿】1区计算机科学类SCI, 自引率低,对国人友好~

一、【期刊简介】 JCR1区计算机科学类SCI&EI 【期刊概况】IF: 7.0-8.0&#xff0c;JCR1区&#xff0c;中科院2区&#xff1b; 【终审周期】走期刊系统&#xff0c;3-5个月左右录用; 【检索情况】SCI&EI双检&#xff1b; 【自引率】1.30% 【征稿领域】发表人工智能…...

Vue.js优化策略与性能调优指南

导语&#xff1a;Vue.js是一款出色的前端框架&#xff0c;但在处理大规模应用或复杂场景时&#xff0c;性能问题可能会出现。本文将介绍一些Vue.js优化策略和性能调优指南&#xff0c;帮助您提升应用的性能和用户体验。 延迟加载&#xff1a;将应用的代码进行按需加载&#xff…...

HEVC环路后处理核心介绍

介绍 为什么需要环路后处理技术 hevc采用基于快的混合编码框架&#xff0c;方块效应、振铃效应、颜色偏差、图像模糊等失真效应依旧存在&#xff0c;为了降低此类失真影响&#xff0c;需要进行环路滤波技术&#xff1b; 采用的技术 去方块滤波DF&#xff0c;为了降低块效应…...

从组件化角度聊聊设计工程化

目录 设计系统 设计系统的定义 设计系统的优势 设计系统存在的问题 设计工程化 设计系统探索 设计系统落地实践 Design Token Design Token 实践 设计工程化理想方案构想 展望 参考文献 近几年围绕业务中台化的场景&#xff0c;涌现出了许多低代码平台。面对多组件…...

apache的配置和应用

文章目录 一、httpd服务支持的虚拟主机类型包括以下三种:二、构建Web虚拟目录与用户授权限制三、日志分割 虚拟Web主机指的是在同一台服务器中运行多个Web站点&#xff0c;其中每一个站点实际上并不独立占用整个服务器&#xff0c;因此被称为“虚拟”Web 主机。通过虚拟 Web 主…...

Buf 教程 - 使用 Protobuf 生成 Golang 代码和 Typescript 类型定义

简介 Buf 是一款更高效、开发者友好的 Protobuf API 管理工具&#xff0c;不仅支持代码生成&#xff0c;还支持插件和 Protobuf 格式化。 我们可以使用 Buf 替代原本基于 Protoc 的代码生成流程&#xff0c;一方面可以统一管理团队 Protoc 插件的版本、代码生成配置&#xff…...

Java 锁 面试题(ReentrantLock、synchronized)

Java 锁 面试题&#xff08;ReentrantLock、synchronized&#xff09; 1. 锁2. ReentrantLock2.1 ReentrantLock 的实现原理2.2 AQS 是什么&#xff1f;2.3 CAS 是什么&#xff1f; 3. synchronized3.1 synchronized 的实现原理3.2 synchronized 的锁升级过程3.2.1 无锁3.2.2 偏…...

Python中的缩进是什么意思?

在Python中&#xff0c;缩进是指在代码中使用空格或制表符来表示代码块的层次结构。Python使用缩进作为语法的一部分&#xff0c;以定义代码的逻辑结构和代码块的范围。缩进在Python中具有以下几个重要的方面和含义。 代码块的开始和结束&#xff1a; 缩进在Python中用于标识代…...

2023年9月数学建模:最小二乘优化、曲线拟合与函数逼近

2023年9月数学建模国赛期间提供ABCDE题思路加Matlab代码,专栏链接(赛前一个月恢复源码199,欢迎大家订阅):http://t.csdn.cn/Um9Zd 目录 1. 最小二乘优化 1.1 最小二乘优化的原理 1.2 最小二乘优化的方法...

EasyAnimateV5中文模型快速部署:Docker Compose一键拉起全栈服务

EasyAnimateV5中文模型快速部署&#xff1a;Docker Compose一键拉起全栈服务 1. 开篇&#xff1a;让图片动起来的AI魔法 你有没有想过&#xff0c;一张静态的照片能在几秒钟内变成生动的视频&#xff1f;现在&#xff0c;这个想法已经变成了现实。EasyAnimateV5中文模型就是这…...

拆解 OpenHands(11)--- Runtime主要组件

本篇继续对 runtime 的解读&#xff0c;主要介绍 插件、执行系统和环境这三个组件。因为本系列借鉴的文章过多&#xff0c;可能在参考文献中有遗漏的文章&#xff0c;如果有&#xff0c;还请大家指出。0x01 三大组件本篇要介绍的几个组件如下&#xff1a;ActionExecutor&#x…...

Java面试-test

test...

BM3D算法深度解析:为什么它至今仍是图像去噪的黄金标准?

BM3D算法深度解析&#xff1a;为什么它至今仍是图像去噪的黄金标准&#xff1f; 在数字图像处理领域&#xff0c;去噪技术一直是研究的热点与难点。从早期的均值滤波到小波变换&#xff0c;再到如今的深度学习&#xff0c;各种方法层出不穷。然而&#xff0c;在这片技术迭代的浪…...

360周鸿祎:智能体技术破圈,引领产业全面重构与独角兽机遇

【导语&#xff1a;在2026中关村论坛年会全球独角兽企业大会上&#xff0c;360集团创始人周鸿祎围绕“龙虾”等新一代智能体技术&#xff0c;阐述其带来的产业变革机遇&#xff0c;涉及互联网、软件等多领域重构&#xff0c;有望催生大量独角兽企业。】智能体技术“破圈”&…...

Windows性能优化:任务管理器深度使用指南

Windows性能优化&#xff1a;任务管理器深度使用指南Windows系统运行缓慢、卡顿&#xff1f;系统自带的任务管理器是诊断和解决性能瓶颈的强大工具。本文将带你深度挖掘Windows任务管理器的各项功能&#xff0c;重点介绍如何利用它进行进程管理、性能监控、启动项优化等操作&am…...

PPTist:5分钟掌握专业级在线PPT制作,免费开源的高效演示解决方案

PPTist&#xff1a;5分钟掌握专业级在线PPT制作&#xff0c;免费开源的高效演示解决方案 【免费下载链接】PPTist 基于 Vue3.x TypeScript 的在线演示文稿&#xff08;幻灯片&#xff09;应用&#xff0c;还原了大部分 Office PowerPoint 常用功能&#xff0c;实现在线PPT的编…...

图案生成自动化:从基础操作到专业应用的完整指南

图案生成自动化&#xff1a;从基础操作到专业应用的完整指南 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 在现代设计工作流中&#xff0c;图案生成往往是最耗时的环节之一。设计…...

CSS 嵌套语法最佳实践:从入门到精通的完整指南

CSS 嵌套语法最佳实践&#xff1a;从入门到精通的完整指南 CSS 是流动的韵律&#xff0c;JS 是叙事的节奏。而 CSS 嵌套&#xff0c;是让这份韵律更加优雅、结构更加清晰的魔法。 一、CSS 嵌套&#xff1a;现代样式表的革命 CSS 嵌套&#xff08;Nesting&#xff09;是 CSS 原…...

异构数据库迁移利器:dbswitch实现多源数据高效同步

1. 异构数据库迁移的痛点与常见方案 第一次接触异构数据库迁移时&#xff0c;我被各种工具搞得晕头转向。当时公司需要把Oracle的业务数据同步到Greenplum做分析&#xff0c;试了好几种方案都不太理想。比如用kettle配置gpload&#xff0c;光是理解那些参数就花了两天时间&…...