美文网首页
24.蓝桥杯2013第四题-第39级台阶

24.蓝桥杯2013第四题-第39级台阶

作者: FiveZM | 来源:发表于2018-03-31 12:32 被阅读0次

    /* https://www.cnblogs.com/zhezh/p/3773477.html

    • 看了博客后理解后做的
    • 算法思路:
    • 我们不应该纠结于先踩左脚还是右脚,我们从题目 "先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。"可以知道,不管踩左脚还是右脚,最后步数为偶数步就可以了,这样
    • 左脚即是右脚,右脚也是左脚,举例子把,比如只有10级台阶,每次踩一个阶梯,先踩左脚,那么要走10步,先踩右脚,那么也是要走10步,所以我们可以不用管左右脚,抓住步数就可以了,就算
    • 当成只用1个脚上去,也可以将再平分为2个脚,意思一样,只有步数为偶数那么就是左脚第一步,右脚最后一步了
    • 所以我们可以以这个步数是否为偶数为递归出口,那么如果39个阶梯,走到了第38个阶梯了,如果最后一步要走2级阶梯,那么阶梯为40,比最大阶梯数39大1,所以这是不符合的,
    • 所以这也是递归的一个出口,当阶梯数大于39
    • 最后一个出口则为,如果阶梯step为39,就是走完了,再判断是否为偶数,是偶数则count加1,也就是上法加1
    • 当条件都满足,那么我们就进行递归,一种递归为不管左脚右脚每次走一阶阶梯,,一种递归是不管左脚右脚每次走两阶阶梯,因为饿这是递归,
    • 在递归的上一层都有两个递归,一个是走一阶,一个是走两阶,
    • 逻辑不影响原数据,不用回溯
      递归从0台阶开始,f(0,0);
    • 题目_第39级台阶
      小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
      站在台阶前,他突然又想着一个问题:
      如果我每一步只能迈上1个或2个台阶。
      先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。
      那么,上完39级台阶,有多少种不同的上法呢?
      请你利用计算机的优势,帮助小明寻找答案。
      答案51167078
    • */
    public class B4 {
        static int count = 0;
        public static void main(String[] args) {
            
            f(0,0);
            System.out.println(count);
        }
        private static void f(int startFloor, int stepNumber) {
            if(startFloor>39)
            {
                return;
            }
            if(startFloor==39)
            {
                if(stepNumber%2==0)
                    count++;
            }
            f(startFloor+1,stepNumber+1);
            f(startFloor+2,stepNumber+1);
        }
    
    }
    
    

    相关文章

      网友评论

          本文标题:24.蓝桥杯2013第四题-第39级台阶

          本文链接:https://www.haomeiwen.com/subject/ujsgcftx.html