算法:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法.
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法.
青蛙每一次跳跃只有两种选择:一是再跳1级阶梯到达第n级阶梯,此时小青蛙处于第n-1级阶梯;或者再跳2级阶梯到达第n级阶梯,此时小青蛙处于n-2级阶梯
于是,n级阶梯的跳法总是依赖于前n-1级阶梯的跳法总数f(n-1)和前n-2级阶梯的跳法总数f(n-2).因为只有两种可能性,所以,f(n)=f(n-1)+f(n-2);
递推公式f(n)=f(n-1)+f(n-2):很熟悉,就是斐波那契数列求和
验证一下,青蛙1级有1种跳法,2级有2种跳法,3级有3种跳法,4级有5种跳法....
使用两种方式来求,递归算法和非递归算法
代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Jump
{class Program{static void Main(string[] args){for (int n = 0; n < 20; n++){int result1 = JumpFloor1(n);int result2 = JumpFloor2(n);Console.WriteLine(result1 + "********" + result2);}Console.ReadKey();}/// <summary>/// 递归算法/// 缺点:太占空间,效率低下,计算到n时,总要依赖前一个n-1再算一遍/// </summary>/// <param name="n"></param>/// <returns></returns>static int JumpFloor1(int n){if (n < 0){return 0;}else if (n == 0 || n == 1 || n == 2){return n;}return JumpFloor1(n - 1) + JumpFloor1(n - 2);}/// <summary>/// 非递归算法/// 时间复杂度O(n)/// 空间复杂度O(1)/// </summary>/// <param name="n"></param>/// <returns></returns>static int JumpFloor2(int n){if (n < 0){return 0;}if (n == 0 || n == 1 || n == 2){return n;}int f1 = 1;int f2 = 2;int result = 0;for (int i = 3; i <= n; i++){result = f1 + f2;f1 = f2;f2 = result;}return result;}}
}
算法:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法.相关推荐
- [递归]一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
这题是用C写的~ 在牛客上半天找不着ACM模式,练习模式里只有核心代码模式 这样用C语言编译器就不能自定义函数啊,不鸡肋吗??? 解决方法:在核心代码模式下用C++编译器(反正C++完全兼容C的不是吗 ...
- 【python逻辑算法题】一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法
文章目录 一.题目描述 二.问题分析 三.代码分析与逻辑(python3实现) 四.源码及运行结果 总结 提示:以下是本篇文章正文内容: 一.题目描述 题目:一只青蛙一次可以跳上1级台阶,也可以跳上2 ...
- c语言青蛙游戏,c语言:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?...
一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? 解:把n级台阶时的跳法记为f(n),当n>2时,第一次跳的时候有两种不同的选择:一是第一次只跳1级,此 ...
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?(递归与动态规划)
一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? private static HashMap<Integer, Long> record = n ...
- 牛客网刷题java之(斐波那契数列)一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 分析: 对于本题,前提只有 一次 1阶或者2阶的跳法. a.如果两种跳法, ...
- 牛客网刷题java之变态跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 其实和普通的只能跳一个和两个台阶的思路是一样的,都是为了求迭代表达式. ...
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
import java.util.Scanner;/* 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法.请用递归和循环2中方法实现答案来源:https://w ...
- 一只青蛙一次可以跳上1级台阶也可以跳上2级求该青蛙跳上一个n级的台阶总共有多少种跳法?
一只青蛙一次可以跳上1级台阶也可以跳上2级求该青蛙跳上一个n级的台阶总共有多少种跳法? 解题思路 :每次跳1到n,那么如果是n阶台阶,一次就可能跳1~n阶(话说n=1000,青蛙腿肯定绑火箭了),乍一 ...
- (java)跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
文章目录 题目描述 思路 解法一:递归暴力破解 解法二: 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路 解法一 ...
- 变态跳台阶问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法?
编程题 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法? 分析 对于n级台阶,第一步的跳法有n种:跳1级.跳2级.跳3级-跳n级 跳1级, ...
最新文章
- repo入门和基本用法
- Servlet学习DAY_01:服务器概念/Web服务器的作用/ Servlet概念/ 如何关联和解除Tomcat/ 创建一个Web工程 /Servlet响应流程/ Get-Post /常见异常
- KVM 虚拟化架构和实现原理
- Linux中 set、env、declare、export显示shell变量的区别
- staruml顺序图生成协作图_一个工具箱 之 南丁格尔玫瑰图生成器
- 利用ABAP 740的新关键字REDUCE完成一个实际工作任务
- Tips--Ubuntu16.04系统安装时无法连接WiFi
- java exchangedeclare_Exchange服务器之RabbitMQ四种Exchange类型之Topic (Java)
- Awvs14下载与安装
- 家庭网络布线图与布线方案
- 读《反欺骗的艺术》有感
- ryuyan 方差分析_R语言之方差分析篇
- HTML5CSS3知识点总结(1)
- input onfocus onblur
- 机器翻译系统,主要划分为哪几大类型?
- LXC的Python学习笔记
- 【YOLACT】测试自己数据集
- 【战神引擎】一键打开所有修改路径快捷方式
- 微信三级分销系统介绍
- 上行OFDMA接入机制(UL-OFDMA)