动态规划问题——青蛙跳台阶案例分析
问题描述:
一只青蛙要跳上n级台阶,它每次可以跳 1级或者2级。问:青蛙有多少种不同的跳法可以跳完这些台阶?

举个例子:
假设台阶数 n = 3 ,我们来看看青蛙有多少种跳法。
可能的跳法:
1. 跳1级,再跳1级,再跳1级。(1+1+1)
2. 跳1级,再跳2级。(1+2)
3. 跳2级,再跳1级。(2+1)
所以,当 n = 3 时,总共有 3种跳法。
规律是什么?
我们可以发现,青蛙跳到第 \( n \) 级台阶的跳法数,取决于它跳到前两级台阶的跳法数:
1. 如果青蛙最后一步跳 1级,那么它之前一定是从第 n-1 级跳上来的。
2. 如果青蛙最后一步跳 2级,那么它之前一定是从第 n-2 级跳上来的。
递推公式:
f(n) = f(n-1) + f(n-2)
其中:
f(1) = 1 (只有1级台阶,只有一种跳法)
f(2) = 2 (2级台阶,可以跳1+1,或者直接跳2)
具体计算:
我们用一个表格来计算 \( f(n) \) 的值:
| 台阶数n | 跳法数f(n) | 计算方式 |
| 1 | 1 | 只有一种跳法:1 |
| 2 | 2 | 两种跳法:1+1或2 |
| 3 | 3 | f(2)+f(1)=2+1 |
| 4 | 5 | f(3)+f(2)=3+2 |
| 5 | 8 | f(4)+f(2)=5+3 |
| ... | ... | ... |
代码实现:
用代码来计算f(n)的值:
def jump_ways(n):if n <= 0:return 0elif n == 1:return 1elif n == 2:return 2# 初始化前两级台阶的跳法数prev1, prev2 = 1, 2 # f(1) = 1, f(2) = 2# 从第3级开始计算for i in range(3, n + 1):current = prev1 + prev2prev1, prev2 = prev2, currentreturn prev2# 示例
n = 5
print(f"跳上 {n} 级台阶的跳法数:{jump_ways(n)}")
输出:
跳上 5 级台阶的跳法数:8
总结:
跳到第 n 级台阶的跳法数,等于跳到第 n-1 级的跳法数,加上跳到第n-2级的跳法数。
- 这个规律和斐波那契数列是一样的。
- 通过动态规划,我们可以高效地计算出结果。
相关文章:
动态规划问题——青蛙跳台阶案例分析
问题描述: 一只青蛙要跳上n级台阶,它每次可以跳 1级或者2级。问:青蛙有多少种不同的跳法可以跳完这些台阶? 举个例子: 假设台阶数 n 3 ,我们来看看青蛙有多少种跳法。 可能的跳法: 1. 跳1级…...
element-ui使用el-table,保留字段前的空白
项目名称项目编号1、XXXXX1111111111111111111 1.1 XXXXX11111111111111222222222 如上表格中,实现项目名称字段1.1前空白的效果。 从JAVA返回的数据带有空白,即数据库中插入的数据带有空白。 原先写法: <el-table><el-tabl…...
kamailio中路由模块汇总
功能模块描述请求路由 (request_route)主要处理进入的SIP请求,包含初步检查、NAT检测、CANCEL请求处理、重传处理等。处理通过REQINIT、NATDETECT、RELAY等子模块的调用。CANCEL处理对CANCEL请求进行处理,包括更新对话状态并检查事务。如果事务检查通过&…...
如何使用 DeepSeek 搭建本地知识库
使用 DeepSeek 搭建本地知识库可以帮助您高效管理和检索本地文档、数据或知识资源。以下是详细的步骤指南: 1. 准备工作 (1) 安装 DeepSeek 确保您的系统已安装 Python 3.8 或更高版本。使用 pip 安装 DeepSeek: bash pip install deepseek (2) 准备…...
网络HTTP详细讲解
学习目标 什么是HTTPHTTP的请求和响应常见的HTTP状态码HTTP的安全性 什么是HTTP?HTTP的请求和响应,常见的HTTP状态码,HTTP的安全性 什么是HTTP HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用…...
《Origin画百图》之边际分布曲线图
《Origin画百图》第六集——边际分布曲线图 入门操作可看《30秒,带你入门Origin》 边际分布曲线图,其中包含散点图形,而在图的边际有着分布曲线图。在比较数据以查看多个变量之间是否存在关系时非常有用。 1.数据准备:为多列XY数…...
【Milvus】向量数据库pymilvus使用教程
以下是根据 Milvus 官方文档整理的详细 PyMilvus 使用教程,基于 Milvus 2.5.x 版本: PyMilvus 使用教程 目录 安装与环境准备连接 Milvus 服务数据模型基础概念创建集合(Collection)插入数据创建索引向量搜索删除操作完整示例注…...
React 生命周期函数详解
React 组件在其生命周期中有多个阶段,每个阶段都有特定的生命周期函数(Lifecycle Methods)。这些函数允许你在组件的不同阶段执行特定的操作。以下是 React 组件生命周期的主要阶段及其对应的生命周期函数,并结合了 React 16.3 的…...
第 26 场 蓝桥入门赛
2.对联【算法赛】 - 蓝桥云课 问题描述 大年三十,小蓝和爷爷一起贴对联。爷爷拿出了两副对联,每副对联都由 N 个“福”字组成,每个“福”字要么是正的(用 1 表示),要么是倒的(用 0 表示&#…...
组合(力扣77)
从这道题开始,我们正式进入回溯算法的学习。之前在二叉树中只是接触到了一丢丢,而这里我们将使用回溯算法解决很多经典问题。 那么这道题是如何使用回溯算法的呢?在讲回溯之前,先说明一下此题是如何递归的。毕竟回溯递归不分家&a…...
网络工程师 (22)网络协议
前言 网络协议是计算机网络中进行数据交换而建立的规则、标准或约定的集合,它规定了通信时信息必须采用的格式和这些格式的意义。 一、基本要素 语法:规定信息格式,包括数据及控制信息的格式、编码及信号电平等。这是协议的基础,确…...
Linux之文件IO前世今生
在 Linux之文件系统前世今生(一) VFS中,我们提到了文件的读写,并给出了简要的读写示意图,本文将分析文件I/O的细节。 一、Buffered I/O(缓存I/O)& Directed I/O(直接I/O&#…...
如何在Windows中配置MySQL?
MySQL是一个广泛使用的开源关系型数据库管理系统,它支持多种操作系统平台,其中包括Windows。无论是开发者进行本地开发,还是管理员为应用程序配置数据库,MySQL都是一个非常流行的选择。本篇文章将详细介绍如何在Windows操作系统中…...
Kafka 入门与实战
一、Kafka 基础 1.1 创建topic kafka-topics.bat --bootstrap-server localhost:9092 --topic test --create 1.2 查看消费者偏移量位置 kafka-consumer-groups.bat --bootstrap-server localhost:9092 --describe --group test 1.3 消息的生产与发送 #生产者 kafka-cons…...
数学知识学习1
1、数论 1质数判定 i<n/i优化O(sqrt(n)) bool is_prime(int n){if(n<2)return false;for(int i2;i<n/i;i){if(n%i0)return false;} true; } 分解质因数 i<n/i优化O(sqrt(n)) // 定义一个函数 divide,接收一个整数 n 作为参数,用于分解质…...
【AI日记】25.02.08
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】【AI应用】 探索 AI 应用探索周二有个面试,明后天打算好好准备一下,我打算主要研究下 AI 如何在该行业赋能和应用,以及该行业未来的发展前景和公司痛点&#…...
Lecture8 | LPV VXGI SSAO SSDO
Review: Lecture 7 | Lecture 8 LPV (Light Propagation Volumes) Light Propagation Volumes(LPV)-孤岛惊魂CryEngine引进的技术 LPV做GI快|好 大体步骤: Step1.Generation of Radiance Point Set Scene Representation 生成辐射点集的场景表示:辐射…...
Java中实现定时锁屏的功能(可以指定时间执行)
Java中实现定时锁屏的功能(可以指定时间执行) 要在Java中实现定时锁屏的功能,可以使用java.util.Timer或java.util.concurrent.ScheduledExecutorService来调度任务,并通过调用操作系统的命令来执行锁屏。下面我将给出一个基本的…...
Java集合List详解(带脑图)
允许重复元素,有序。常见的实现类有 ArrayList、LinkedList、Vector。 ArrayList ArrayList 是在 Java 编程中常用的集合类之一,它提供了便捷的数组操作,并在动态性、灵活性和性能方面取得了平衡。如果需要频繁在中间插入和删除元素…...
[实验日志] VS Code 连接服务器上的 Python 解释器进行远程调试
目录 0. 前言 1. 环境 2. 准备工作 2.1 安装VS Code 2.2 安装插件 2.3 配置远程服务器 2.4 修改设置 2.5 打开远程调试窗口 3. 调试代码 3.1 输密码 3.2 打开服务器文件夹 3.3 配置Python环境 3.4 调试Python代码 补充:使用调试控制台,查看…...
【Perplexity Pro深度评测】:20年AI工具实战专家拆解3大隐藏成本与5个被忽略的高阶功能值不值得?
更多请点击: https://intelliparadigm.com 第一章:Perplexity Pro订阅值不值得 核心能力对比:免费版 vs Pro版 Perplexity Pro 提供实时联网搜索、多文件上传解析(PDF/DOCX/CSV)、无限次深度追问及自定义AI工作区等关…...
千问 LeetCode 2281.巫师的总力量和 public int totalStrength(int[] strength)
LeetCode 2281. 巫师的总力量和 是一道经典的 贡献法 + 单调栈 + 前缀和的前缀和 题目。题目要求对数组的所有非空连续子数组,计算: min(subarray) * sum(subarray) 的总和,并对 10^9 + 7 取模。 ✅ 解题思路(核心思想) 我们 不枚举所有子数组(那样是 O(n)),而是 枚…...
【Oracle数据库指南】第17篇:Oracle逻辑与物理存储结构——表空间、段、区、数据块全解析
上一篇【第16篇】Oracle连接模式与内存管理——专用服务器、共享服务器与AMM 下一篇【第18篇】Oracle数据库规划与前期准备——创建数据库前的系统工作 摘要 本文系统讲解Oracle数据库的存储结构体系,包括逻辑存储(数据库→表空间→段→区→数据块&…...
【人生底稿 23】新疆出差记・上篇:初入边疆,三个半小时的漫长飞行
2024 年的 6 月,刚在赣州、河北、湖南的项目里连轴转完,手里的需求设计还没完全收尾,一通临时电话,打破了我短暂的节奏 —— 任务突然下达:陪客户前往新疆乌鲁木齐的甲方现场。这不是我第一次出差,却是第一…...
硬件相关项目内容介绍(硬件咱们也有相关技术支持内容哦)
硬件相关项目内容介绍(硬件咱们也有相关技术支持内容哦) 硬件咱们也有相关技术支持内容哦。 主要看大家喜欢什么,硬件内容咱们会不定期更新分享,大家要是喜欢,后续就安排上实物实操。也虚心听取大家建议,不…...
CSS 视图过渡完全指南
CSS 视图过渡完全指南 引言 CSS 视图过渡(View Transitions)是一个强大的新特性,它允许开发者创建平滑的页面过渡动画。本文将深入探讨视图过渡的各种用法和高级技巧。 基础概念回顾 什么是视图过渡 视图过渡 API 允许你在 DOM 状态变化时创建…...
技术生态依赖的实质与破局:从Android到自主可控的实践路径
1. 项目背景与核心议题解析最近在整理行业资料时,翻到一篇2013年的旧文,讨论的是当时中国工信部对国内移动产业过度依赖Android系统的担忧。虽然时过境迁,但文中提到的“技术自主可控”与“全球生态融入”之间的张力,在今天看来依…...
DeepSeek模型服务Kubernetes化迁移 checklist(含CRD定义、ServiceMesh适配、TLS双向认证配置)
更多请点击: https://intelliparadigm.com 第一章:DeepSeek模型服务Kubernetes化迁移全景概览 将DeepSeek系列大语言模型(如DeepSeek-V2、DeepSeek-Coder)从单机或虚拟机部署迁移至Kubernetes集群,是支撑高并发推理、…...
BetaClaw:开源AI代理运行时,统一多模型调用与智能成本控制
1. 项目概述:一个为开发者打造的“瑞士军刀”级AI代理运行时如果你和我一样,每天都在和不同的AI模型打交道,那你一定也经历过这种痛苦:想用Claude写点创意文案,得去Anthropic的API;想用GPT-4o分析代码&…...
Windows运行Android应用终极指南:APK Installer让你的电脑秒变安卓手机
Windows运行Android应用终极指南:APK Installer让你的电脑秒变安卓手机 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在移动应用生态日益丰富的今天&…...
