剑指offer 9-10:青蛙跳台阶与Fibonacii数列
题目描述
问题分析
我们将跳法个数y与台阶数n视为一个函数关系,即y=f(n)。首先从第一级开始,当n=1时,只有一种跳法,即f(1)=1。当有两级台阶时,有两种跳法,跳两个一阶,或直接跳两阶,共有两种解法,即f(n)=2。
当n>2时,对于n级台阶而言,每次只能选跳一阶或者二阶中的一种,无论是哪一种,都只有唯一的选择。故当跳一阶的时候,跳法和f(n-1)的跳法个数相同,当跳二阶的时候,跳法个数和f(n-2)的个数相同。从
而对于跳n阶台阶的解法满足f(n)=f(n-1)+f(n-2)。
对于这个计算公式,大家有没有很熟悉。没错这就是斐波那契数列的计算公式,跳台阶问题就是斐波那契数列问题的一个变种,只不过起始条件稍有变化,通常推荐使用循环来实现fibonacci数列。
下面给出该问题的C++实现:
class Solution {
public:
int jumpFloor(int number) {
//斐波那契数列问题的扩展
if(number<=0){ //非法输入检测
return 0;
}else if(number<=2){ //起始一级和两级台阶
return number;
}
int pre_2=1,pre_1=2,curr=0;
for(int i= 3;i<=number;i++){ //使用循环求解斐波那契数列
curr=pre_2+pre_1;
pre_2=pre_1;
pre_1=curr;
}
return curr;
}
};
刷题,只为了不给自己留遗憾!------haozi
剑指offer 9-10:青蛙跳台阶与Fibonacii数列的更多相关文章
- 【剑指Offer】10- II. 青蛙跳台阶问题 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人微信公众号:负雪明烛 目录 题目描述 解题方法 动态规划 日期 题目地址:https: ...
- 【剑指 Offer】10-II.青蛙跳台阶问题
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008, ...
- 剑指Offer - 九度1388 - 跳台阶
剑指Offer - 九度1388 - 跳台阶2013-11-24 03:43 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包 ...
- 【剑指offer】09-3变态跳台阶
原创博文,转载请注明出处! # 本文是牛客网<剑指offer>刷题笔记,笔记索引连接 1.题目 # 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的 ...
- 剑指offer 09:变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. /* f(n-1) = f(n-2) + f(n-3) + ... + f(0 ...
- 剑指offer(8)跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目分析 题目很简单,稍微分析就知道这是斐波那契数列,所以可以动态规划来做 a.如果两种跳法,1阶 ...
- 剑指offer九之变态跳台阶
一.题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 二.思路 1.关于本题,前提是n个台阶会有一次n阶的跳法.分析如下: f(1) ...
- 【剑指Offer】8、跳台阶
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 解题思路: 首先考虑最简单的情况,如果只有1级台阶, ...
- 剑指offer 11:变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 解法:使用数学归纳法可得,跳n级台阶的跳法一共有f(n)=2n-1中,即本 ...
随机推荐
- Nginx 配置高可用的集群
1.什么是 nginx 高可用 (1)需要两台 nginx 服务器 (2)需要 keepalived (3)需要虚拟 ip 2.配置高可用的准备工作 (1)需要两台服务器 192.168.17.129 ...
- Linux-TCP之深入浅出send和recv【转】
转自:https://www.cnblogs.com/JohnABC/p/7238417.html 内容摘自:TCP之深入浅出send和recv.再次深入理解TCP网络编程中的send和recv 建议 ...
- Matplotlib 日期格式转换
官网链接:https://matplotlib.org/api/dates_api.html#matplotlib.dates.date2num import numpy as np import d ...
- 【cf741】D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(dsu on tree)
传送门 题意: 给出一颗以\(1\)为根的有根树,树边带有一个字符(\(a\)~\(v\))的信息. 输出对于每个结点,其子树内最长的简单路径并且满足边上的字符能够组成回文串. 思路: 显然最终的答案 ...
- 使用flask搭建微信公众号:完成token的验证
上一篇文章讨论了官方给的例子验证token失败的解决方法:微信公众号token验证失败 想了一下,还是决定不适用web.py这个框架.因为搜了一下他的中文文档不多,学起来可能会有点麻烦.而且看着他没有 ...
- python3.5.3rc1学习五:模块
#比较大小#name:maxNumber.py#比较两个数大小#C:\Users\Anthony\AppData\Local\Programs\Python\Python36-32\Lib\site- ...
- appium常使用的命令
1.查看apk安装包的appPackagehe和appActivity aapt dump badging E:\taobao.apk > E:\taobao.txt -- 将appPack ...
- 消息中间件(二)MQ使用场景
一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有ActiveMQ,Rabbit ...
- Session中短信验证码设置有效时间
Session中短信验证码设置有效时间 package com.mozq.boot.kuayu01.controller; import org.springframework.web.bind.an ...
- Python 对象比较(is & ==)
Python 对象有 3 要素 id type value id 对象在内存中的地址 可以通过 id() 获取 比较 只有同一个对象 id 才会相同 id 通过 is 比较 示例: a = list( ...