当前位置: 首页 > 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 最小二乘优化的方法...

Akebi-GC 实战指南:掌握游戏功能修改与自动化测试技术

Akebi-GC 实战指南&#xff1a;掌握游戏功能修改与自动化测试技术 【免费下载链接】Akebi-GC (Fork) The great software for some game that exploiting anime girls (and boys). 项目地址: https://gitcode.com/gh_mirrors/ak/Akebi-GC 作为一款专注于游戏功能修改与自…...

Agent 框架别急着乱学:先用 LangChain 搞懂 7 个基本模块

先说结论。 如果你想系统理解 Python Agent 框架&#xff0c;LangChain 仍然值得作为第一篇。它不是最轻的&#xff0c;也不是最“自动化”的&#xff0c;但它把 Agent 应用里的关键零件都摆出来了&#xff1a;模型、工具、状态、记忆、middleware、多 Agent 路由和 tracing。…...

Sunshine游戏串流服务器:5步搭建你的终极私人云游戏平台

Sunshine游戏串流服务器&#xff1a;5步搭建你的终极私人云游戏平台 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上畅玩PC游戏&#xff0c;却受限于硬件性能&…...

毕业论文格式反复返工?paperxie 智能排版教你一键通过导师审核

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/format/typesettinghttps://www.paperxie.cn/format/typesetting 作为毕业季最耗时耗力的 “机械劳动”&#xff0c;论文格式调整往往比正文写作更磨人。字号、行距、页眉页…...

Steam创意工坊下载器深度解析:WorkshopDL架构揭秘与实战指南

Steam创意工坊下载器深度解析&#xff1a;WorkshopDL架构揭秘与实战指南 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 在跨平台游戏生态日益成熟的今天&#xff0c;Steam创意…...

智能数据上下文层:让AI代理真正理解您的企业数据价值

智能数据上下文层&#xff1a;让AI代理真正理解您的企业数据价值 【免费下载链接】WrenAI Turn any AI Agents into world-class data analysts through the open context layer that gives AI agents grounded, governed memory, context, SQL across 20 data sources, that h…...

Cobalt Strike 完整安装指南,含网盘资源与Java配置

Cobalt Strike安装教程 说明&#xff1a; 本教程仅用于学习与研究&#xff0c;请勿用于非法用途。 kali安装java环境参考&#xff08;如有侵权联系删除&#xff09; https://blog.csdn.net/weixin_54499207/article/details/144985879?sharetypeblog&shareId144985879&…...

免费开源AMD Ryzen硬件调试神器:SMUDebugTool完整使用指南

免费开源AMD Ryzen硬件调试神器&#xff1a;SMUDebugTool完整使用指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…...

AI系统6%误差率为何触发链式崩溃?生产级监控实战指南

1. 项目概述&#xff1a;当6%的失误率成为系统性风险的临界点“The 6% Problem: Why AI Safety Monitoring Isn’t Optional Anymore”这个标题乍看像一篇科技评论&#xff0c;但在我过去十年参与过27个AI系统落地项目&#xff08;涵盖金融风控、医疗辅助诊断、工业质检、政务智…...

java springboot-vue的婚庆服务平台的功能设计

目录同行可拿货,招校园代理 ,本人源头供货商功能模块设计技术架构亮点特色创新点项目定位项目技术支持源码获取详细视频演示 &#xff1a;同行可合作点击我获取源码->->进我个人主页-->获取博主联系方式同行可拿货,招校园代理 ,本人源头供货商 功能模块设计 后端&am…...