剑指 Offer 10- II. 青蛙跳台阶问题

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

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例 1:

输入:n = 2
输出:2

示例 2:

输入:n = 7
输出:21

示例 3:

输入:n = 0
输出:1
递归方法如下所示


void f(int a,int n,int *sum){if(a<n){f(a+1,n,sum);f(a+2,n,sum);}if(a==n){(*sum)++;}
}int numWays(int n){int *sum=(int *)malloc(sizeof(int));*sum=0;int a=0;f(a,n,sum);return *sum;}

其实这题本质上是一个斐波那契数列,我们可以递推该题,那么代码如下:

/*动态规划:把问题转化为求斐波那契数列第 n 项的值
用纸写一下结果,就能找出规律,每种情况的答案是前面两种情况的答案之和。所以,这就是一个斐波那契数列
因此用动态规划的方法即可,代码如下 非常简单。*/
int numWays(int n){int dq[n+1];int i;for(i=0;i<=n;i++){if(i==0)dq[i]=1;else if(i==1)dq[i]=1;elsedq[i]=((dq[i-1]+dq[i-2])%1000000007);}return dq[n];}

剑指 Offer 10- II. 青蛙跳台阶问题 -递归法和数学递推法相关推荐

  1. 【剑指offer】10-II.青蛙跳台阶问题

    Python3 先简单列举一些台阶级数,看看有无数学规律:   当台阶为0级时,有1种跳法:   当台阶为1级时,有1种跳法:   当台阶为2级时,有2种跳法:   当台阶为3级时,有3种跳法:    ...

  2. 剑指offer:10-II.青蛙跳台阶问题

    10-II-青蛙跳台阶问题 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/ ...

  3. 剑指offer 动画图解 | 变态跳台阶

    文章目录 题目描述 解题思路 算法 总结规律 算法代码 算法效率 通过刷题剑指offer,可以有效提升面试成功的概率,这是因为技术岗位的面试总是离不开算法题.如果想要在算法题方面表现得好的话,刷题是唯 ...

  4. 【剑指offer】_06 变态跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 解题思路 链接:https://www.nowcoder.com/questi ...

  5. 【剑指Offer】07变态跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 时间限制:1秒:空间限制:32768K 解题思路 可利用数学归纳法找规律: 当 ...

  6. 剑指offer面试题[9-1]-跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析:如果台阶数为0,就有0种跳法:如果台阶数为1,那么就有1种跳法:如果台阶数为2,那么就有2种 ...

  7. 算法Day8|字符串专题二 剑指 Offer 58 - II. 左旋转字符串,28. 找出字符串中第一个匹配项的下标,459. 重复的子字符串

    剑指 Offer 58 - II. 左旋转字符串 解题思路: 反转区间为前n的子串 反转区间为n到末尾的子串 反转整个字符串 class Solution {public String reverse ...

  8. 剑指 Offer 53 - II. 0~n-1中缺失的数字(二分查找)

    /*** 剑指 Offer 53 - II. 0-n-1中缺失的数字* @author wsq* @date 2020/10/08一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在 ...

  9. LeetCode Algorithm 剑指 Offer 57 - II. 和为s的连续正数序列

    剑指 Offer 57 - II. 和为s的连续正数序列 Ideas 区间问题首先想到用双指针. 因为这题没有给定数组,其实相当于就是一个从1到target的数组,然后直接套双指针的模板就可以了. 双 ...

最新文章

  1. java单链表 提供增删改查_java实现单链表增删改查的实例代码详解
  2. 【HDU - 1540】 Tunnel Warfare (线段树进阶操作 区间合并+ 单点更新+ 最长覆盖区间查询 )
  3. python闭包详解函数_详解python函数的闭包问题(内部函数与外部函数详述)
  4. Intel Core Enhanced Core架构/微架构/流水线 (1) - 特性概述
  5. 【实用工具】linux Can‘t bind address: Address already in use
  6. 应用栈解决迷宫问题的C语言实现
  7. hiho一下第91周《Events Arrangement》(前半部分)
  8. 0.618 与 1.414
  9. docker java mysql_docker搭建tomcat+mysql容器并部署Java系统
  10. Hadoop - 任务调度系统比较
  11. linux 管道 线程,linux中通过管道实现qq的聊天功能,用到了线程
  12. win10 安装c语言无法启动,win10开机出现0xc0000098无法启动简单解决方法
  13. 数值分析笔记 第一章 数值分析与科学计算引论
  14. C/C++ Dev-cpp 5.4.0下载安装包,百度网盘
  15. java 200以内的素数_java200以内的素数每行每列7个代码怎么写?
  16. 自动弹出 微信授权登录窗口
  17. 20135323符运锦---信息安全系统设计基础第一周学习总结
  18. 天翼云流量服务器,天翼云CDN常见问题解答
  19. 【es】elasticsearch生产数据备份和恢复方案
  20. android 动态替换logo

热门文章

  1. 如何修改 chrome 记住密码后自动填充表单的黄色背景?
  2. 范型(Generics)学习笔记
  3. java中generics的作用,java中泛型(Generics)的一些理解
  4. 计算机化系统验证总结报告,计算机化系统验证方案总结.docx
  5. 切图神器 --- Assistor
  6. 联想小新Pro16 和 联想拯救者R7000,选哪个好
  7. android apk 破解
  8. 写论文怎么获取参考文献的Bibtex
  9. Bochs硬盘启动流程
  10. CAN FD协议实用指南