题目描述:

啤酒2元一瓶 4个瓶盖能换1瓶啤酒,2个空瓶也能换1瓶啤酒,问:n元钱最多能喝几瓶酒?

解题思路:

在不能借瓶盖的情况下,第一种方法直接暴力求解。

/* 啤酒2元一瓶 4个瓶盖能换1瓶啤酒,2个空瓶也能换1瓶啤酒*/

/*n元钱最多能喝几瓶酒?*/

public class ForTest {

static class Solution {

public int canDrink(int money) {

int beer_num=0;

int lid_num=0;

int bottle_num=0;

int ans=0;

while ((money>0&&money%2==0)||lid_num>=4||bottle_num>=2){

if(money>0&&money%2==0){

beer_num=money/2;

lid_num=beer_num;

bottle_num=beer_num;

money-=2*beer_num;

ans+=beer_num;

}

if(lid_num>=4){

beer_num=lid_num/4;

lid_num=lid_num-beer_num*4+beer_num;

bottle_num+=beer_num;

ans+=beer_num;

}

if(bottle_num>=2){

beer_num=bottle_num/2;

lid_num+=beer_num;

bottle_num=bottle_num-beer_num*2+beer_num;

ans+=beer_num;

}

}

return ans;

}

}

public static void main(String[] args) {

Solution s=new Solution();

int ans=s.canDrink(10);

System.out.println(ans);

}

}

第二种方法用递归求解。

/* 啤酒2元一瓶 4个瓶盖能换1瓶啤酒,2个空瓶也能换1瓶啤酒*/

/*n元钱最多能喝几瓶酒?*/

public class ForTest {

static class Solution {

public int canDrink(int money, int lib_num, int bottle_num,int ans) {

if ((money <= 0 || money == 1) && lib_num < 4 && bottle_num < 2) {

return ans;

}else {

if (money > 0&&money!=1) {

ans++;

return canDrink(money - 2, lib_num + 1, bottle_num + 1,ans);

}

if (lib_num >= 4) {

ans++;

return canDrink(money, lib_num - 4 + 1, bottle_num + 1,ans);

}

if (bottle_num >= 2) {

ans++;

return canDrink(money, lib_num + 1, bottle_num - 2 + 1,ans);

}

return ans;

}

}

}

public static void main(String[] args) {

Solution s = new Solution();

int ans=s.canDrink(10, 0, 0,0);

System.out.println(ans);

}

}

java算法买3瓶送1瓶_【算法】啤酒与瓶盖与空瓶(java)相关推荐

  1. JAVA 递归算法- 椰子汁5元一瓶,4个盖子可以换一瓶椰子汁,3个空瓶可以换一瓶椰子汁,那么 100 块钱可以喝多少瓶椰子汁,剩下瓶盖和空瓶各多少?

    目录 原题展示 做表理思路 当初始汽水为3瓶时 当初始汽水为4瓶时 分析提取数据逻辑 瓶子的个数的计算 盖子的个数的计算 汽水数目的计算 取模运算 源代码 成功截图 原题展示 椰子汁5元一瓶,4个盖子 ...

  2. 一瓶汽水1块钱,3个瓶盖换一瓶汽水,2个空瓶换一瓶汽水,假如手里有5块钱,能喝多少瓶汽水

    用三种方式实现以下命题: 一瓶汽水1块钱,3个瓶盖换一瓶汽水,2个空瓶换一瓶汽水,假如手里有5块钱,能喝多少瓶汽水 java 采用经典Java OOP方式实现,一目了然. /**已喝掉*/ stati ...

  3. java 寻找和为定值的多个数_算法笔记_037:寻找和为定值的两个数(Java)

    1 问题描述 输入一个整数数组和一个整数,在数组中查找两个数,满足他们的和正好是输入的那个整数.如果有多对数的和等于输入的整数,输出任意一对即可.例如,如果输入数组[1,2,4,5,7,11,15]和 ...

  4. java删除有序数组中的重复元素_算法刷刷刷Leetcode第26题删除排序数组中的重复项...

    给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成.示例 ...

  5. java创建对象new后面为啥可以传入参数_你有认真了解过自己的“Java对象”吗?渣男...

    对象在 JVM 中是怎么存储的 对象头里有什么? 作为一名 Javaer,生活中的我们可能暂时没有对象,但是工作中每天都会创建大量的 Java 对象,你有试着去了解下自己的"对象" ...

  6. java更新新的知识要怎么知道_晟司小蒙告诉你,Java技术知识点,不定时更新!!!...

    2017年11月6日 标题:多态 多 态★★★★★(面向对象特征之一):函数本身就具备多态性,某一种事物有不同的具体的体现. 体现:父类引用或者接口的引用指向了自己的子类对象.//Animal a = ...

  7. java如何调用同目录下的文件_文件目录发生了增删改操作?Java如何实时监控?...

    前言 有时候你可能有个疑问,IDE总是可以检测到外部文件是否发生了变化,比如你在某个类里面加了一些代码,这时候的IDE就会弹出一个框说你做了更改.再或者是某个文件夹下的文件发生了改变,比如新建了一个或 ...

  8. JAVA中几种循环结构的表示_本文通过实例讲解给大家介绍Java中for、while、do while三种循环语句的区别,具体详情如下所示:第一种:for循环 循环结构for语句的格式...

    本文通过实例讲解给大家介绍Java中for.while.do while三种循环语句的区别,具体详情如下所示: 第一种:for循环 循环结构for语句的格式: for(初始化表达式;条件表达式;循环后 ...

  9. JAVA程序中怎么看线程的个数_一个文件中有10000个数,用Java实现一个多线程程序将这...

    18 推荐 运行结果: 编辑于 2015-07-16 17:20:57 回复(11) 12 自己重写了一下推荐答案,加了些注释方便理解 package threadpackage; import ja ...

最新文章

  1. react-webpack-express
  2. ORA-12518,TNS:listener could not hand off client connection
  3. 华为防火墙USG基本配置
  4. 写得太好了!树莓派安装docker
  5. ABP官方文档翻译 0.0 ABP官方文档翻译目录
  6. 《潜伏》走红背后的心理原因
  7. java poi word 表格_java 使用POI 读写word 表格
  8. 参会者说丨LiveVideoStackCon 2019上海 音视频技术大会
  9. php开发入门,PHP开发入门教程之面向对象
  10. python环境变量的配置_python基础教程-第一讲-带你进入python的世界
  11. Python使用wordnet工具计算词集与词条基本用法(一)
  12. SQL Server多实例环境搭建与连接
  13. MATLAB简介与矩阵定义
  14. 测试页能打印 软件不能打,打印机可以打印测试页不能打印文档怎么处理
  15. 认证协议RADIUS篇
  16. 一木.溪桥---Python之简介、环境搭建、PyCharm配置
  17. 信道容量迭代算法验证
  18. 18 在springboot整合thymeleaf模板引擎中@Controller和@RestController不同注解的跳转页面方法
  19. 欧美风游戏音乐的特点
  20. Oracle 误删恢复

热门文章

  1. 百度-视觉技术部招聘计算机视觉相关算法实习生
  2. CSS——引入阿里字体图标步骤
  3. 【ParaView教程】第四章 常见问题 —— 怎样在ParaView中将颜色预设默认设为Blue to Red Rainbow?
  4. ZYNQ学习笔记(3)-局部重构Partial Reconfiguration
  5. error: cannot use promoted field in struct literal of type [duplicate]
  6. 大厂php笔试题,【大厂必备】2020超经典PHP面试题
  7. php图文排版样式模版,20款简约样式,多种类型文章的通用模板!
  8. C#:Krypton控件使用方法详解(第九讲) ——kryptonRadioButton
  9. hadoop3-求分组topn
  10. 用友YonSuite释放商业创新的“蝴蝶效应”