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实现正则匹配检索远端FTP目录下的文件
Mar 25 Python
python3实现短网址和数字相互转换的方法
Apr 28 Python
Python基本socket通信控制操作示例
Jan 30 Python
Python3中的bytes和str类型详解
May 02 Python
python文件选择对话框的操作方法
Jun 27 Python
Django如何简单快速实现PUT、DELETE方法
Jul 24 Python
Python基本类型的连接组合和互相转换方式(13种)
Dec 16 Python
python分布式计算dispy的使用详解
Dec 22 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
Python批量修改xml的坐标值全部转为整数的实例代码
Nov 26 Python
python 学习GCN图卷积神经网络
May 11 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
php 设计模式之 工厂模式
2008/12/19 PHP
ezSQL PHP数据库操作类库
2010/05/16 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
Ext.MessageBox工具类简介
2009/12/10 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
JS实现图片预加载无需等待
2012/12/21 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
python利用拉链法实现字典方法示例
2017/03/25 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
村干部承诺书
2014/03/28 职场文书
百日安全活动总结
2014/05/04 职场文书
体育专业自荐书
2014/05/29 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
教师工作总结范文2014
2014/11/10 职场文书
入党现实表现材料
2014/12/23 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
催款函怎么写
2015/06/24 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
Python如何配置环境变量详解
2021/05/18 Python