蓝桥杯-第39级台阶

来源:互联网 发布:法里内利 知乎 编辑:程序博客网 时间:2024/05/20 20:58
  • 题目

题目: 第39级台阶
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。

要求提交的是一个整数。

注意:不要提交解答过程,或其它的辅助说明文字。

  • 方法一

递推解决,模拟上楼

public class ThreeNineSteps {    static int n = 0;    public static void main(String[] args) {        f(39, 0);        System.out.println(n);    }    static void f(int step,int counter) {        if(step==0) {            if(counter%2==0)                n++;            return ;        }        f(step-1, counter + 1);        if(step>=2)            f(step-2, counter + 1);    }}
  • 方法二
    巧妙的分解问题,也是递推解决问题。对于N步阶梯偶数步上去,只要求出N-1N-2步阶梯奇数步上去的即可。
public class ThreeNineSteps {    public static void main(String[] args) {        System.out.println(even(39));    }    //N个台阶在奇数步内走完    static int odd(int n) {        if(n==1) return 1;        else if(n==2) return 1;        else if(n==3) return 1;        return even(n-1) + even(n-2);    }    //N个台阶在偶数步内走完    static int even(int n) {        if(n==1) return 0;        else if(n==2) return 1;        else if(n==3) return 2;        return odd(n-1) + odd(n-2);    }}

后者速度更快。。。

0 0
原创粉丝点击