栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

蓝桥杯:李白打酒

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蓝桥杯:李白打酒

分析:

        寻找可行解,我们考虑DFS的单条路径。这条路径上有两种可能,一种是你的步数*2,一种是你的步数-1,那么只需要求出有多少种走法能让你步数为0。

        最后一步肯定是步数-1,也就是题目中的遇到花。所以我们在这条路径上布置5个步数*2,9个步数-1,然后搜索它的可行解。

        所以我们这条路径的最后一个节点肯定是步数-1,那么我们走的时候只需要进行5次步数*2和9次步数-1,然后判断剩下的酒是不是1就行。

        用DFS搜索这条路径所有满足条件的解即可。

        与这题类似的:蓝桥杯:第39级台阶。这里是用二叉树的思路进行的分析

Java: 

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
  static int sum = 0;
    public static void main(String[] args) {
      //店的数量,花的数量,和初始的酒数量
        dfs(5,9,2);
        System.out.println(sum);
    }
    public static void dfs(int m,int n,int wine){
      //先遇到店
      if(m>0){
        dfs(m-1,n,wine*2);
      }
      //在遇到花店
      if(n>0){
        dfs(m,n-1,wine-1);
      }
      //如果店走完了,花也走完了(剩一个是最后的),因为最后遇见的肯定是花,所以我们要留一斗酒
      if(m==0 && n==0 && wine==1){
        sum++;
      }
    }
}

答案是:

        

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781255.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号