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

 private static HashMap<Integer, Long> record = new HashMap<>();/*** 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法*//*** 分析:* 当n=1时,只有1种跳法(1);* 当n=2时,有2种跳法(11,2);* 当n=3时,有3种跳法(111,12,21)* 当n=4时,有5种跳法(1111,112,121,211,22)* 当n=5时,有8种跳法(11111,1112,1121,1211,2111,221,122,212)* ...* (n-1)的结果 + (n-2)的结果* f(n) = f(n-1) + f(n - 2)*/public static long jumpMethod1(int step) {// step=50, num = 20365011074 38927毫秒if (step <= 0) {return 0;}if (step < 3) {return step;} else {return jumpMethod1(step - 1) + jumpMethod1(step - 2);}}/*** 空间换时间(把计算过的结果保存起来,每次先查下计算过没有,节省很多时间)* @param step* @return*/public static long jumpMethod2(int step) {// 仅用时3毫秒if (record.containsKey(step)) {return record.get(step);}if (step <= 0) {return 0;}if (step < 3) {return step;} else {long num = jumpMethod2(step - 1) + jumpMethod2(step - 2);record.put(step, num);return num;}}/*** 斐波那契数列* @param step* @return*/public static long jumpMethod3(int step) {// 平均耗时 <1毫秒if (step <= 0) {return 0;} else if (step < 3) {return step;} else {long f1 = 0;long f2 = 1;long sum = 0;for (int i = 1; i <= step ; i++) {sum = f1 + f2;f1 = f2;f2 = sum;}return sum;}}

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

 /*** 解析* 假如有1个台阶, 有1种可能* 假如有2个台阶, 有2种可能* 假如有3个台阶, 有3种可能* ...* 假如有n个台阶,* f(n) = f(n - 1) + f(n - 2) + f(n - 3) + ... + f(1)*/public static long pro2_jump1(int n) {if (n <= 0) {return 0;} else if (n < 3) {return n;} else {if (record.containsKey(n)) {return record.get(n);}long sum = 0;for (int i = 1; i <= n ; i++) {sum += pro2_jump1(n - i);}record.put(n, sum);return sum;}}

测试

  public static void main(String[] args) {long jump4 = jumpMethod1(4);System.out.println(jump4);long jump5 = jumpMethod1(5);System.out.println(jump5);long start = System.currentTimeMillis();long jump50 = jumpMethod3(50);long end = System.currentTimeMillis();System.out.println("jump50="+jump50+","+(end-start)+"毫秒");long pro2Jump5 = pro2_jump1(5);System.out.println(pro2Jump5);}

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?(递归与动态规划)相关推荐

  1. [递归]一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    这题是用C写的~ 在牛客上半天找不着ACM模式,练习模式里只有核心代码模式 这样用C语言编译器就不能自定义函数啊,不鸡肋吗??? 解决方法:在核心代码模式下用C++编译器(反正C++完全兼容C的不是吗 ...

  2. 【python逻辑算法题】一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法

    文章目录 一.题目描述 二.问题分析 三.代码分析与逻辑(python3实现) 四.源码及运行结果 总结 提示:以下是本篇文章正文内容: 一.题目描述 题目:一只青蛙一次可以跳上1级台阶,也可以跳上2 ...

  3. c语言青蛙游戏,c语言:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?...

    一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? 解:把n级台阶时的跳法记为f(n),当n>2时,第一次跳的时候有两种不同的选择:一是第一次只跳1级,此 ...

  4. 牛客网刷题java之(斐波那契数列)一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 分析: 对于本题,前提只有 一次 1阶或者2阶的跳法. a.如果两种跳法, ...

  5. 牛客网刷题java之变态跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

    题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 其实和普通的只能跳一个和两个台阶的思路是一样的,都是为了求迭代表达式. ...

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

    import java.util.Scanner;/* 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法.请用递归和循环2中方法实现答案来源:https://w ...

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

    一只青蛙一次可以跳上1级台阶也可以跳上2级求该青蛙跳上一个n级的台阶总共有多少种跳法? 解题思路 :每次跳1到n,那么如果是n阶台阶,一次就可能跳1~n阶(话说n=1000,青蛙腿肯定绑火箭了),乍一 ...

  8. (java)跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    文章目录 题目描述 思路 解法一:递归暴力破解 解法二: 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路 解法一 ...

  9. 变态跳台阶问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法?

    编程题 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法? 分析 对于n级台阶,第一步的跳法有n种:跳1级.跳2级.跳3级-跳n级 跳1级, ...

最新文章

  1. 推荐8个轻巧强大的办公工具,高效实用,不容错过
  2. ISME:宏基因组探究美洲河狸粪便微生物
  3. word文本样式代码样式_使用文本样式表达创建真相来源
  4. jquery.cookie中的操作
  5. AOJ GRL_1_A: Single Source Shortest Path (Dijktra算法求单源最短路径,邻接表)
  6. activity 点击后传递数据给fragment_ViewModel+LiveData实现Fragment间通信
  7. 简单实现x的n次方pta_数学学霸的解题思路1“降低次方和次元”
  8. Google浏览器Chrome,永久开启flash支持的办法
  9. 总结了Linux系统中常用的命令
  10. 艾艾贴常用的数据类型转换
  11. Self-Supervised Gait Encoding with Locality-Aware Attention for Person Re-Identification阅读
  12. Linux software RAID 1 - root filesystem becomes read-only after a fault on one disk
  13. 苹果公司:Apple大中华区的注册开发者数量现已超过500万
  14. 推荐一个windows下使用的无广告解压缩软件
  15. 【macOS免费软件推荐】第6期:洛雪音乐
  16. 计算机网络清单,网络系统材料清单
  17. Sheldon Numbers
  18. echarts的y轴文字显示不全、y轴文字与轴之间设置间隔
  19. 物联网云平台设计与开发:springboot项目搭建与开发(后端)
  20. 基于STM32的无线通信模块使用——A7130

热门文章

  1. 无线认证web认证服务器,wifi web认证服务器地址
  2. Win10 没有激活,如何改变任务栏位置
  3. 计算机考试登记表是准考证嘛
  4. sasl java_SASL协议java实现
  5. 主机MTU值和Docker MTU值不一致导致Harbor无法推送问题
  6. 怎么实现红鲤鱼与绿鲤鱼与驴代码
  7. 初探强化学习(11)Dyna类型的强化学习
  8. 统计学三大相关性系数:pearson,spearman,kendall
  9. 《人类简史:从动物到上帝》读书活动策划
  10. MacBookPro 装win7