返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java 华为真题-猴子爬山
  • 705
分享到

Java 华为真题-猴子爬山

java华为算法 2023-09-21 15:09:33 705人浏览 八月长安
摘要

需求:   一天一只顽猴想去从山脚爬到山顶,途中经过一个有个N个台阶的阶梯,但是这猴子有一个习惯:每一次只能跳1步或跳3步,试问猴子通过这个阶梯有多少种不同的跳跃方式? 输入描述         输入只有一个整数N(0

需求:

  一天一只顽猴想去从山脚爬到山顶,途中经过一个有个N个台阶的阶梯,但是这猴子有一个习惯:每一次只能跳1步或跳3步,试问猴子通过这个阶梯有多少种不同的跳跃方式?

输入描述

        输入只有一个整数N(0

输出描述

        输出有多少种跳跃方式(解决方案数)。

 

输入

3

输出

2

 

输入

50

输出

122106097

分析:

上山最后一步到达第50级台阶,完成上山,共有f(50)种不同的爬法,

到第50级之前位于哪一级呢?无非是位于第49级(上跳1级即到),有f(49)种;

或位于第48级(上跳3级即到),有f(48)种,于是:

f(50)=f(49)+f(47)
f(49)= f(48)+f(46)
f(48)= f(47)+f(45)
依次类推
以此类推,一般地有递推关系:

f(n)=f(n-1)+f(n-3) (n>3)
初始条件:

f(1)=1,即1=1;

f(2)=1,即2=1+1(注意:跳法中不允许直接跳2级);

f(3)=2,即3=1+1+1,3=3;

故此递推设计比较简单,时间复杂度为O(n)

编码:

public class TestDump {    public static void main(String[] args) {        Scanner scanner=new Scanner(System.in);        System.out.print("请输入阶梯数:");        int num=scanner.nextInt();        System.out.println(showF(num));    }        public static long showF(int n) {        if (n == 1 || n == 2) {            return 1;        }        if (n == 3) {            return 2;        }        return showF(n - 1) + showF(n - 3);    }}

效果:

来源地址:https://blog.csdn.net/hlx20080808/article/details/132981013

--结束END--

本文标题: Java 华为真题-猴子爬山

本文链接: https://www.lsjlt.com/news/414249.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作