蓝桥杯官网填空题(第39级台阶)

本文介绍了如何通过编程实现,利用递归和DFS解决小明面临的39级台阶上法问题,展示了计算不同上法的方法。

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小明刚刚看完电影《第 39 级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是 39 级!

站在台阶前,他突然又想着一个问题:

如果我每一步只能迈上 1 个或 2 个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完 39 级台阶,有多少种不同的上法呢?

请你利用计算机的优势,帮助小明寻找答案。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M
import java.util.Scanner;

public class Main {
    //static int ans=0;
    public static void main(String[] args) {
        /*dfs(0,-1);//当前一共上了几级台阶、步数
        System.out.println(ans);
    }
    public static void dfs(int sum,int step){
        if(sum>39){
            return;
        }
        if(sum==39&&step%2==0){
            ans++;
            return;
        }
        dfs(sum+1,step+1);
        dfs(sum+2,step+1);*/
        System.out.println(51167078);
    }
}
package 真题;


public class main1 {
    static int ans=0;
    static int count=39;
    public static void main(String[] args) {
        dfs(count,666,0);//当前一共上了几阶、左0,右1、总步数
        System.out.println(ans);
    }
    public static void dfs(int sum,int x,int step){
        if(sum<0){
            return;
        }
        if(sum==0&&x==1&&step%2==0){
            ans++;
            return;
        }
        for(int j=0;j<=1;j++) {
            if(j==x){
                continue;
            }
            for (int i = 1; i <= 2; i++) {
                count-=i;
                dfs(count, j,step+1);
                count+=i;
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值