一只青蛙跳向三个台阶_青蛙跳台阶问题的三种解法
题目:一只青蛙一次可以跳 1 级台阶,也可以跳 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
这道题还被 ITEye 放在了博文视点杯有奖答题活动里面。
我提供三种解法。
1、递归求解:
青蛙每跳一次前,有这样三种情况:
(1)只剩 1 级或 0 级台阶了,只能跳一步或者无法再跳了,那么这条路也走到了终点,走法的种类数可以加 1;
(2)可以走 2 级台阶;
(3)可以走 1 级台阶。
于是递归方法求解:
2、概率论思路求解:
首先把问题抽象成简单的数学模型,设 2 步台阶跳了 x 次,1 步台阶跳了 y 次,那么:
2x + y = n
于是,当 x = i ,可知 x >= 0 ,且 x < n/2(向下取整),设某时刻的 x = i ,那么有 y = n – 2 * x ,于是,总共需要走 z = i + n – 2 * x 步。
这时,问题即转化为:
z 步骤中,有 x 个两步,y 个一步,相当于 z 个空当,由 x、y 去填充,那么不同填充方法的数目符合概率公式:
C(x,z) = z! / ((z-x)!x!)
即从排列 z 中取其中 x 个数的种类,x 内部无序:
3、数学归纳法求解:
如果 n=1,总步数 f(n)=1;如果 n=2,总步数 f(n)=2。
另一方面,当 n>=3,当前还剩的步数 f(n),如果接下去跳一步,那么还剩下的步数是 f(n-1);如果接下去跳两步,那么还剩下的步数是 f(n-2),故:f(n)=f(n-1)+f(n-2)。
现设 s3=f(n),s2=f(n-2),s1=f(n-1),从时间、空间复杂度来说,这也是最简单的一种方法:
聪明的你,还有什么办法?
欢迎和我讨论。 :)
—————————————————————————————————————-
补充:
跳到第 N 级话,
可以先跳 N-1 级,再跳 1 级;
也可以先跳 N-2 级,再跳 2 级。
所以 f(n)=f(n-1)+f(n-2),就是斐波那契数列。
既然都知道是斐波拉契数列了,那就给个通式吧:
F(N) =
((5+5^(1/2))/10)*(((1+5^(1/2))/2)^n) +
((5-5^(1/2))/10)*(((1-5^(1/2))/2)^n)
N >= 1
时间复杂度 O(log n),因为求一个数的 n 次方,可以以时间复杂度为 log n 的方式来计算求解。
文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》
×Scan to share with WeChat
一只青蛙跳向三个台阶_青蛙跳台阶问题的三种解法相关推荐
- 一只青蛙跳向三个台阶_青蛙跳台阶
关于本题,前提是n个台阶会有一次n阶的跳法.分析如下: f(1) = 1 f(2) = f(2-1) + f(2-2) //f(2-2) 表示2阶一次跳2阶的次数. f(3) = f( ...
- 微信跳一跳python全部代码_微信跳一跳python代码
今天早上有些人嘲笑我手残 mdzz# -*- coding: utf-8 -*- import os import time import numpy as np import matplotlib. ...
- python对象三个特性_百度资讯搜索_python对象三个特性
金生水起程序猿 2020年11月22日 16:26大纲(面向对象的三大特性) 封装性继承性多态性 封装性 封装隐藏了对象的属性和方法内部实现细节,仅对外提供公共访问方式,类的内部可以访问,外部不可以访 ...
- 新华三的背景_星际联盟一行莅临新华三集团杭州总部,展望分布式存储广阔发展空间...
数字经济背景下,分布式存储作为"新基建"的重要技术,为数字经济时代构筑了最坚实的底层设施.在突如其来的疫情期间,IPFS分布式存储由于具备永久.去重复.去中心.点对点等技术特征,发 ...
- 新华三的背景_开放融合创新:新华三全力支撑运营商5G赋能百业
2020年我国5G建设进入快车道.工信部最新数据显示,截至今年10月,我国已累计开通5G基站超过70万个,终端连接数超过1.8亿,提前完成全年60万个5G基站的目标.无论是从基站数还是用户数来看,我国 ...
- 新华三的背景_新华三的背景_开放融合创新:新华三全力支撑运营商5G赋能百业...
2020年我国5G建设进入快车道.工信部最新数据显示,截至今年10月,我国已累计开通5G基站超过70万个,终端连接数超过1.8亿,提前完成全年60万个5G基站的目标.无论是从基站数还是用户数来看,我国 ...
- python跳一跳脚本详解_微信跳一跳游戏 python脚本辅助得高分
微信小程序一时间火爆朋友圈,关键是还有排行榜!游戏操作简单,可直接根据电脑识别,用python写出自动跳辅助脚本,本想动手写下,索性网上有大神写了现成脚本,修改了一小部分参数,就可以稳定使用了霸榜没有 ...
- python微信使用教程全图_微信跳一跳python怎么刷分_微信跳一跳python使用教程_飞翔教程...
最近,跳一跳,可以说是火爆了微信好友圈,Github大神wangshub分享了一个针对该游戏的开源项目,也就是一个Python脚本程序可以刷很高的分,下面飞翔铭月为大家带来跳一跳python使用教程. ...
- python学法用法 自动刷分_微信跳一跳python怎么刷分_微信跳一跳python使用教程
微信跳一跳python怎么刷分?要知道,游戏中这个Python脚本程序可以刷很高的分数,所以接下来小编要为大家介绍下python使用教程! 微信跳一跳python使用教程 工具介绍 Python 2. ...
最新文章
- python培训班 北京-北京python培训机构那个好?这几个坑千万别踩
- 阿里巴巴常考面试题及汇总答案
- String类能被继承吗,为什么?
- FreeEIM 小插件 dwzjzx v2.1001 2013 下载
- 罗永浩直播带货二手iPhone 11:1700台秒售光!
- python如何处理inp文件_python 之文件操作
- 验证注册页面信息(JavaScript)
- jz2440裸机开发与分析:S3c2440ARM异常与中断体系详解8---定时器中断程序示例
- 脉冲响应函数方差分解Eviews
- 通向Golang的捷径【20. 使用 Go 语言的 GAE】
- Carte+kettle+mysql性能问题定位分析记录
- 三天打鱼两天晒网python程序_三天打鱼两天晒网
- Android手机APN简介
- MIME (多用途互联网邮件扩展类型)
- latex—中文目录乱码
- 【Bluetooth蓝牙开发】九、BLE协议之GATT
- send/sendto和recv/recvfrom各自的区别
- SSL应用系列之三:CA证书颁发机构(中心)安装图文详解
- MacOS Monterey 12.2.1 (21D62) OC 0.7.8 / Cl 5144 / PE 三分区原版黑苹果镜像
- python快速入门【五】---- 面向对象编程、python类
热门文章
- 【linux系统编程】剖析shell运行原理
- 9 10次c语言上机作业答案,第十五次上机作业带答案
- 7种方式,教你提升 SpringBoot 项目的吞吐量
- 错误记录(12):No 'Access-Control-Allow-Origin' header is present on the requested resource.
- mac破解wifi密码
- vue动态加载静态资源
- spring 14-Spring框架JDBC操作
- homebrew 安装 formula 的不同历史版本——以安装 node 为例
- [USACO14JAN]Recording the Moolympics
- python与数值计算环境安装