本人没有一定、扎实的计算机编程基础,也是自学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)代码如下图此题代码很简短,但其背后的思想十分值得萌新去学习与理解,希望这种思想能够在你日后的面试中帮到您!



