栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

动态规划入门算法:小青蛙跳台阶问题(JavaSE)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

动态规划入门算法:小青蛙跳台阶问题(JavaSE)

  本人没有一定、扎实的计算机编程基础,也是自学Java,特创此篇博客也希望能激励和我一样程度自学编程的人能一直坚持下去!

1)题目:

  一共有n接台阶,如果一只小青蛙每次只能跳一阶台阶,或者两阶台阶,那么一共有多少种方案可以让小青蛙跳到顶端?

例如:当n等于2时,一共有两种方案: 1,让小青蛙一次性跳两阶台阶 2,让小青蛙每次只跳一阶,一共跳两次跳到顶端.

2)解题分析:

解决此题时所需要的一种核心思想就是动态规划。何为动态规划?

动态规划其实就是利用上一次得到的结果,给下一次作参考,下一次就能利用上一次所得到的结果快速得到该次结果,以此类推。

!当台阶只一阶时,那么只有1种方法:就是小青蛙只跳一个台阶既能到达顶端;

!当台阶有两阶时,那么有2种方法: 小青蛙先只跳一阶,跳两阶到达顶端  或小青蛙一次直接跳两阶到达顶端;

!当台阶有三阶时,那么有3种方法: 2+1=3:小青蛙先跳一阶台阶,剩下两个台阶有两种方法;小青蛙先跳两阶台阶,就剩下一个台阶; 

!当台阶有四阶时,那么有5种方法:  2+3=5:  青蛙先跳一阶,还剩三阶,剩下的三阶有三种方法;小青蛙先跳两阶的时候,还剩两阶台阶,有两种方法,因此为2+3

!!! 以这样的规律不妨可以想出,当有五阶台阶时,自然有3+5=8种方法

以此类推......

3)方程构思及步骤:

因为小青蛙跳到第u阶的时候,取决于它前两阶方法的加和,即第u-1阶的方法+u-2阶的方法。所以不妨构建数组,核心方程为arr[j]=arr[j-1]+arr[j-2],所以步骤如下:

1:随机定义一个阶梯数,假设阶梯数u=100个台阶吧;

2:定义数组arr,arr[0]和arr[1]都已确定为1种方法和2种方法;

3:运用for循环,定义int型变量j,因为一个台阶和两个台阶都已经确定,所以令j=2开始循环;

4:核心步骤为arr[j]=arr[j-1]+arr[j-2];

5:最后输出即可,切记,因为定义了j=2,所以要从j+1开始输出;

4)代码如下图

 

 此题代码很简短,但其背后的思想十分值得萌新去学习与理解,希望这种思想能够在你日后的面试中帮到您!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292284.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号