7、斐波那契数列 & 8、跳台阶 & 9、变态跳台阶
来源:互联网 发布:手机域名注册管理局 编辑:程序博客网 时间:2024/05/16 01:22
7、题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
n<=39
时间限制:1秒 空间限制:32768K
这么简单的题我竟然想了很久方法还不对。。以下是答案的两种
Ⅰ 递归调用法
方法简单但是效率不高,运行时间970ms。
代码:
class Solution {public: int Fibonacci(int n) { if(n <= 0) return 0; if(n==1 || n==2) return 1; return Fibonacci(n-1)+Fibonacci(n-2); }};
Ⅱ 动态规划法
思想:每次返回的f,即数列的第n个值都等于它的后一个数减去它的前一个数,用g来记录当前值的后一个值。
如下图:
class Solution {public: int Fibonacci(int n) { int f = 0,g = 1; while(n-->0){ g += f; f = g - f; } return f; }};
8、题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
时间限制:1秒 空间限制:32768K
思想:和上一题类似,跳上每一节台阶的跳法次数,等于它的上一节和上上节的次数之和,因为每一节都是从它的上一节跳一节到达或者它的上上节跳两节到达的。
但是运行时间要650ms。
代码:
class Solution {public: int jumpFloor(int number) { if(number <= 0) return 0; if(number==1) return 1; if(number==2) return 2; return jumpFloor(number-1)+jumpFloor(number-2); }};
9、变态跳台阶
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
时间限制:1秒 空间限制:32768K
思路:还是递归调用的思想
class Solution {public: int jumpFloorII(int number) { int res = 1;//=1的情况是直接跳上当前台阶的跳法 if(number<=0) return 0; if(number==1) return res; for(int i = 2;i <= number;i++){ res += jumpFloorII(i-1); } return res; }};
0 0
- 7、斐波那契数列 & 8、跳台阶 & 9、变态跳台阶
- 斐波那契数列、跳台阶、变态跳台阶、矩形覆盖
- 剑指offer——斐波那契数列,跳台阶、变态跳台阶、矩形覆盖
- 斐波那契数列及其变形问题(跳台阶,变态跳台阶,矩形覆盖)
- 剑指offer 面试题9 斐波那契数列/青蛙跳台阶/矩形覆盖/变态跳台阶
- 跳台阶/斐波那契数列
- 剑指offer-算法题练习:part9 变态跳台阶-斐波那契数列问题
- 青蛙跳台阶(斐波那契数列应用)
- 斐波那契数列及青蛙跳台阶问题
- 斐波那契数列(青蛙跳台阶)
- C++实现斐波那契数列/青蛙跳台阶
- 跳台阶(斐波那契数列)
- 2、斐波那契数列以及青蛙跳台阶
- 跳台阶——斐波那契数列问题
- 斐波那契数列及青蛙跳台阶问题
- 斐波那契数列及青蛙跳台阶问题
- 跳台阶(同斐波那契数列)
- 青蛙跳台阶----斐波那契数列
- thresholded-Landweber
- C语言执行过程详解
- TextView行距等设置
- hdu4712-随机化算法
- 移动端开发路在何方
- 7、斐波那契数列 & 8、跳台阶 & 9、变态跳台阶
- ids for this class must be manually assigned before calling save()
- magento批量修改价格
- SpringMVC form表单 上传多个文件
- 感知机算法及应用学习笔记
- MySql 错误1067,1045( Can't open and lock privilege tables: Table 'mysql.user' doesn't exist)
- Jquery Validate 相关参数及常用的自定义验证规则
- MySQL——关于MySQL分组查询group by和order by获取最新时间内容的方法
- Teamviewer的简介