`

关于青蛙跳阶问题的算法分析

阅读更多

首先申明,一下是我个人分析得出,但是根据正确答案是2^n,所以以下个人分析过程仅供参考,并非正确.

 

 

2. 青蛙跳阶问题。

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

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

 

对于这个问题进行解答:

1. 假定青蛙跳阶的跳法以f(n)来表示,n表示阶数,即f(1)表示1阶的跳法,f(2)表示2阶的跳法...

2. 由于对于第二个问题有一次n级跳法,所以这里设定一个值f(0)=f(n-n)=1 表示n阶由一次跳上n级的跳法数为1。

 

--------------------------------------------问题(1)解答------------------------------------------------------------

问题(1),前提只有 一次 1阶或者2阶的跳法。

a.如果两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1);

b.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2)

c.由a\b假设可以得出总跳法为: f(n) = f(n-1) + f(n-2) 

d.然后通过实际的情况可以得出:只有一阶的时候 f(1) = 1 ,只有两阶的时候可以有 f(2) = 2

e.可以发现最终得出的是一个斐波那契数列:

| 1, (n=1)

f(n) = | 2, (n=2)

| f(n-1)+f(n-2) ,(n>2,n为整数)

----------------------------------------------问题(2)解答------------------------------------------------------------

问题(2),前提是n个台阶会有一次n阶的跳法。分析如下:

f(1) = 1

f(2) = f(2-1) + f(2-2)         //f(2-2) 表示2阶一次跳2阶的次数。

f(3) = f(3-1) + f(3-2) + f(3-3) 

...

f(n) = f(n-1) + f(n-2) + f(n-3) + ... + f(n-(n-1)) + f(n-n) 

 

说明: 

1)这里的f(n) 代表的是n个台阶有一次1,2,...n阶的 跳法数。

2)n = 1时,只有1种跳法,f(1) = 1

3) n = 2时,会有两个跳得方式,一次1阶或者2阶,这回归到了问题(1) ,f(2) = f(2-1) + f(2-2) 

4) n = 3时,会有三种跳得方式,1阶、2阶、3阶,

那么就是第一次跳出1阶后面剩下:f(3-1);第一次跳出2阶,剩下f(3-2);第一次3阶,那么剩下f(3-3)

因此结论是f(3) = f(3-1)+f(3-2)+f(3-3)

5) n = n时,会有n中跳的方式,1阶、2阶...n阶,得出结论:

f(n) = f(n-1)+f(n-2)+...+f(n-(n-1)) + f(n-n) => f(0) + f(1) + f(2) + f(3) + ... + f(n-1)

6) 由以上已经是一种结论,但是为了简单,我们可以继续简化:

f(n-1) = f(0) + f(1)+f(2)+f(3) + ... + f((n-1)-1) = f(0) + f(1) + f(2) + f(3) + ... + f(n-2)

f(n) = f(0) + f(1) + f(2) + f(3) + ... + f(n-2) + f(n-1) = f(n-1) + f(n-1)

可以得出:

f(n) = 2*f(n-1)

7) 得出最终结论,在n阶台阶,一次有1、2、...n阶的跳的方式时,总得跳法为:

| 1       ,(n=0 ) 

f(n) = | 1       ,(n=1 )

| 2*f(n-1),(n>=2)

------------------------------------------------------------------------------------------------------------------------


5
0
分享到:
评论
1 楼 evasiu 2011-12-17  
分析得真好。

相关推荐

    Unity小游戏《青蛙跳》算法

    Unity小游戏《青蛙跳》是一款基于Unity引擎开发的轻量级休闲游戏,它的核心算法主要涉及到物理模拟、碰撞检测以及简单的游戏逻辑控制。下面将详细解释这些关键知识点。 1. 物理模拟: Unity内置了强大的物理引擎,...

    青蛙跳测试智商青蛙跳测试智商

    青蛙跳测试智商青蛙跳测试智商青蛙跳测试智商青蛙跳测试智商

    青蛙为什么要跳台阶?C语言趣解青蛙跳台阶问题.pdf

    青蛙跳台阶问题不仅仅是一个简单的编程练习,它还揭示了动态规划和递归算法的精髓,如何通过数学归纳法推导出通项公式,以及在实现过程中对算法效率的考量。在IT行业,解决此类问题有助于提高编程能力和优化算法设计...

    青蛙跳HTML5游戏源码

    6. **游戏逻辑**:青蛙跳游戏涉及物理引擎的模拟,比如重力、碰撞检测等。这些可以通过数学公式和条件判断实现,也可以借助像Phaser这样的游戏框架,它封装了这些复杂逻辑,简化了开发过程。 7. **服务器环境**:...

    android青蛙跳游戏

    通过分析和学习《Android青蛙跳游戏》,开发者不仅可以提升自己的编程技能,还能对游戏开发的完整流程有深入的认识,包括设计、实现、测试和调试等环节,这对于今后开发更复杂的应用或者游戏大有裨益。

    VC++实现的青蛙跳

    在本项目中,我们主要探讨的是使用VC++编程语言实现的一个名为"青蛙跳"的模拟游戏。这个小程序的目的是为了展示青蛙如何通过一系列跳跃动作从一个位置到达另一个位置,这通常涉及策略和随机性,使得游戏既具有挑战性...

    青蛙跳台阶问题1

    青蛙跳台阶问题是一个经典的动态规划问题,也与斐波那契数列有一定的联系。在这个问题中,我们假设一只青蛙要跳上一个具有 n 级台阶的楼梯,每次它可以跳 1 级或者 2 级。我们需要找出到达最高台阶的所有不同跳法的...

    小学数学一年级青蛙跳—数轴练习题一步计算两步计算.doc

    小学数学一年级青蛙跳—数轴练习题一步计算两步计算 本资源是一个小学数学一年级的青蛙跳格子练习题,旨在帮助学生练习数轴概念和计算能力。下面是一个详细的知识点解释: 一、数轴概念 数轴是表示数字之间关系的...

    Flash游戏制作教程:青蛙跳荷叶.pdf

    Flash游戏制作教程:青蛙跳荷叶 本资源为Flash游戏制作教程,主要介绍了青蛙跳荷叶游戏的制作步骤和相关代码。该游戏包括青蛙跳动、荷叶来回移动、背景移动、游戏开始和结束、游戏可玩性增加等多个元素。 一、青蛙...

    小游戏源码-青蛙跳.rar

    【标题】"小游戏源码-青蛙跳.rar"指的是一个压缩包文件,其中包含了制作一款名为“青蛙跳”的小游戏的所有源代码。源码是程序开发的基础,它由程序员编写,用特定编程语言描述了游戏的逻辑、规则和交互。在这个案例...

    青蛙跳跳小游戏

    【青蛙跳跳小游戏】是一款基于C#编程语言开发的趣味性智力挑战游戏,旨在提供一个轻松愉快的游戏体验,同时锻炼玩家的反应速度和策略规划能力。在这个游戏中,玩家需要控制一只青蛙,在不断移动的石头之间跳跃,以尽...

    一种新型仿青蛙弹跳腿设计

    一种新型仿青蛙弹跳腿设计,张伟,樊继壮,设计了一种新型仿青蛙弹跳腿,腿机构采用气动肌肉作为跳跃驱动单元,并采取双关节驱动形式,在增加气动肌肉驱动关节转角的大小同

    基础算法-python青蛙跳台阶

    【基础算法】-python青蛙跳台阶 way = 0 def traceback(n, step_num): global way if n > step_num: return if n == step_num: way += 1 return traceback(n+1, step_num) traceback(n+2, step_num) ...

    【算法题】青蛙跳台阶问题(附过程取模证明)

    综上所述,青蛙跳台阶问题是一个结合了动态规划和模运算的算法问题,其解法的关键在于理解递推关系并正确处理取模操作,以避免数值溢出。通过这样的方法,我们可以有效地计算出任何不超过100级台阶的跳法数量。

    vfmh#JAVA2020#面试题10- II. 青蛙跳台阶问题1

    面试题10- II. 青蛙跳台阶问题题目链接面试题10- II. 青蛙跳台阶问题题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。示例 1:输入:n =

    FLASH 8 青蛙跳

    可以复制到FLASH中,简单方便效果还不错,希望你们可以用到

    表格模板-青蛙跳河.ett

    表格模板-青蛙跳河.ett

    IQ测试小游戏--青蛙跳跳

    讓左右兩邊青蛙交換位置,通常年薪50万水準的人,三分鐘內可以完成 ^_^ 。...1:用鼠标点青蛙头部,它会向前跳; 2:它最多只能跳过一个青蛙; 3:按红色箭头,游戏复原。 4:此题肯定有解,不要怀疑。

    小学数学一年级青蛙跳数轴练习题集一步计算两步计算.doc

    小学数学一年级的学习中,"青蛙跳数轴"是一种常见的练习方式,旨在帮助孩子们理解数轴的概念,掌握基本的加减运算。在这个练习题集中,主要涉及了一步计算和两步计算的问题,这对于初学者来说是两个重要的数学技能。...

    php中青蛙跳台阶的问题解决方法

    问题的背景是有一只青蛙,它能一次跳1级或2级台阶,问跳上n级台阶有多少种跳法。这个问题与著名的斐波那契数列(Fibonacci sequence)紧密相关。 首先,我们来分析这个问题的规律。当台阶数n为1时,只有一种跳法;...

Global site tag (gtag.js) - Google Analytics