Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法


Posted in Python onMay 19, 2018

前言

跳台阶、变态跳台阶、矩形覆盖其实都和斐波那契数列是一类问题,文中通过示例代码介绍的非常详细,下面话不多说了,来一起看看详细的介绍吧。

跳台阶

问题描述:

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

分析:

初始值很容易得到,当n > 2时,跳上n级台阶最后一步无外乎两种情况,从第n-1级跳一级跳上来,或是从第n-2级跳2级跳上来,因此很容易得到如下递归公式。

F(0)= 0
F(1)= 1
F(2)= 2
F(n)= F(n-1)+ F(n-2)(n > 2)

代码:

def jump_floor(number):
 if number <= 2:
  return number
 prev, curr = 1, 2
 for _ in range(3, number+1):
  prev, curr = curr, prev+curr
 return curr

变态跳台阶

问题描述:

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

分析:

相比上一个跳台阶,这次可以从任意台阶跳上第n级台阶,也可以直接跳上第n级。因此其递归公式为各个台阶之和再加上直接跳上去的一种情况。

F(0)= 0
F(1)= 1
F(2)= 2
F(n)= F(n-1)+ F(n-2)+ … + F(2)+ F(1)+ 1 = 2 **(n-1)

代码:

def jump_floor(number):
 if number == 0:
  return 0
 return 2**(number-1)

矩形覆盖

问题描述:

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

分析:

仔细分析这个问题实际上就是普通的跳台阶问题。

F(0)= 0
F(1)= 1
F(2)= 2
F(n)= F(n-1)+ F(n-2)(n > 2)

代码:

def jump_floor(number):
 if number <= 2:
  return number
 prev, curr = 1, 2
 for _ in range(3, number+1):
  prev, curr = curr, prev+curr
 return curr

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python监控文件或目录变化
Jun 07 Python
Python验证文件是否可读写代码分享
Dec 11 Python
python re模块findall()函数实例解析
Jan 19 Python
Python遍历pandas数据方法总结
Feb 09 Python
PyQt5每天必学之日历控件QCalendarWidget
Apr 19 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
May 10 Python
python tkinter之 复选、文本、下拉的实现
Mar 04 Python
Pycharm+Python工程,引用子模块的实现
Mar 09 Python
Numpy 理解ndarray对象的示例代码
Apr 03 Python
详解python内置模块urllib
Sep 09 Python
Flask中jinja2的继承实现方法及实例
Mar 03 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 Python
Python利用公共键如何对字典列表进行排序详解
May 19 #Python
Python中一些不为人知的基础技巧总结
May 19 #Python
Python + selenium自动化环境搭建的完整步骤
May 19 #Python
pandas中去除指定字符的实例
May 18 #Python
pandas数据清洗,排序,索引设置,数据选取方法
May 18 #Python
对pandas replace函数的使用方法小结
May 18 #Python
基于DataFrame筛选数据与loc的用法详解
May 18 #Python
You might like
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
浅谈PHP中Stream(流)
2015/06/08 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
详解angularJs中自定义directive的数据交互
2017/01/13 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
2017/12/18 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
vue实现前进刷新后退不刷新效果
2018/01/26 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
mock.js模拟数据实现前后端分离
2019/07/24 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
深入浅析python继承问题
2016/05/29 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
生物化学研究助理员求职信
2013/10/09 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
先进个人材料怎么写
2014/12/30 职场文书
天坛导游词
2015/02/02 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
java设计模式--三种工厂模式详解
2021/07/21 Java/Android