java-啤酒一瓶2元,二个空瓶可以换一瓶啤酒,四个瓶盖也可以换一瓶啤酒,现在有10元钱,可以最多喝几瓶啤酒

问题描述

啤酒一瓶2元,二个空瓶可以换一瓶啤酒,四个瓶盖也可以换一瓶啤酒,现在有10元钱,可以最多喝几瓶啤酒
怎么写java程序实现下面的问题:
啤酒一瓶2元,二个空瓶可以换一瓶啤酒,四个瓶盖也可以换一瓶啤酒,现在有10元钱,可以最多喝几瓶啤酒

解决方案

少年 试试看看
public static int getbeer(int num)
{
int sum = num;//初始化总数
//瓶数大于等于2时,可以换
while(num>=2)

{
//新一次更换后总瓶数为更换前瓶数与瓶数/2的和
sum=sum+num/2;

//这是为了保证不会因为奇数瓶摩2少掉一个空瓶
if(num%2==1)

sum++;
num=num/2;
}
//这就是结果
return sum;

}

解决方案二:
这道题根本没有编程的必要,因为它不具备普适性。
可以考虑把单价,钱,换取规则都作为输入,最终可以喝的啤酒瓶数作为输出。

解决方案三:
public static int Drink(int nint dint pint total){
int drink = n>>1;
int leftd = d + drink%2;
int leftp = p + drink%4;
int s = drink>>1;
int f = drink>>2;
if(s>0||f>0){
total = Drink(drink leftd leftptotal);
}
return total + drink + s + f ;
}
public static void main(String[] args) {
System.out.println(Drink(10 0 0 0));
}

解决方案四:
方法内那么多变量会影响虚拟机执行效率 写注释是个好习惯 代码里不该出现实数的

解决方案五:

 public class BeerGame {    /**     * 啤酒总数     */    private static int beerNum = 0;    /**     * 每次增加的啤酒数,包括购买的,用空瓶换取以及瓶盖换取     */    private static int addBeerNum = 0;    /**     * 当前空瓶数     */    private static int bottleNum = 0;    /**     * 当前瓶盖数     */    private static int libNum = 0;    public static void main(String[] args) {        //首次购买增加啤酒数        addBeerNum = 10 >> 1;        //啤酒数目增加后依次更改啤酒总数、当前空瓶数以及当前瓶盖数        afterAddBeerNumChange(addBeerNum);        //判断当前空瓶数或瓶盖数是否支持继续兑换        while(bottleNum >= 2 || libNum >= 4){            //空瓶数大于2时可兑换            if (bottleNum >= 2) {                //获取兑换啤酒数                addBeerNum = bottleNum >> 1;                //更改当前空瓶数                bottleNum = bottleNum % 2;                //修改啤酒总数、当前空瓶数以及当前瓶盖数                afterAddBeerNumChange(addBeerNum);            }            //瓶盖数大于4时可兑换            if (libNum >= 4) {                //获取兑换啤酒数                addBeerNum = libNum >> 2;                //更改当前瓶盖数                libNum = libNum % 4;                //修改啤酒总数、当前空瓶数以及当前瓶盖数                afterAddBeerNumChange(addBeerNum);            }        }    }    /**     * 啤酒数目增加后操作,依次更改啤酒总数、当前空瓶数以及当前瓶盖数     * @param addBeerNum 增加啤酒数     */    private static void afterAddBeerNumChange(int addBeerNum){        beerNum += addBeerNum;        bottleNum += addBeerNum;        libNum += addBeerNum;        System.out.println(""beerNum = "" + beerNum + "" bottleNum = "" + bottleNum + "" libNum = "" + libNum);    }}

欢迎批评指正

解决方案六:

 /**          *      * * @param args          */     public static int all = 5;      public static int leftBottle;       public static int leftTop;      public static void main(String[] args) {                all += drink(55);              System.out.println(""总共能喝""+all);             System.out.println(""剩下酒瓶个数""+leftBottle);                System.out.println(""剩下盖子个数""+leftTop);       }       public static int drink(int bottle int top) {              if(bottle >=2 || top >=4){                      leftBottle = (bottle/2) + (bottle%2) + (top/4);                     leftTop = (top/4) + (top%4) + (bottle/2);                       return  (bottle/2) + (top/4) + drink(leftBottleleftTop);               }               return 0;       }

在网上看到的一个解决方法,我觉得挺棒的

解决方案七:
public static int drink(int dint pint total){
int leftd = d%2; //剩余空瓶数
int leftp = p%4; //剩余瓶盖数
int s = d>>1; //空瓶兑酒数
int f = p>>2; //空盖兑酒数
if(s>0||f>0){
total = drink(leftd+s+f leftp+s+ftotal);
}
return total + s + f ;
}
public static int input(int n){
return drink( n>>1 n>>1 n>>1);
}
public static void main(String[] args) {
System.out.println(input(10));
}

时间: 2024-11-16 13:19:15

java-啤酒一瓶2元,二个空瓶可以换一瓶啤酒,四个瓶盖也可以换一瓶啤酒,现在有10元钱,可以最多喝几瓶啤酒的相关文章

说说站长论坛与“10元充值”的不解之缘

作为站长,你是否曾为A5论坛"10元认证'而纠结?是否曾为28推论坛.落伍者论坛升级慢而烦恼?曾经是否因为一个"10元充值"而放弃去某个论坛?走到今天才发现,总有那么几个站长论坛与"10元充值"有着不解之缘.难道登陆站长类论坛必须要经过"10元充值"这一关卡吗? A5.一个强大的站长论坛,注册会员必须充值10块钱才能享受论坛签名.发帖回帖功能. 提示:在线充值¥10元 充值成功后,系统自动获得会员权限和一次申请永久有效 28推.在201

《海洋天堂》票价降为10元李连杰力挺惠民电影

<海洋天堂>官方海报 本报讯 (实习生 魏溪)昨日,东方世纪电影广场举办的"5元电影专场"活动已经接近尾声,前来参与活动.体验惠民票价的市民依然络绎不绝,场面持续火爆.在活动期间,除了经典影片的票价低至5元以外,大部分近期上映的新片也能够以10元的全城最低价观赏到. "5元电影专场"活动自推出以来,引起了社会各界广泛的关注,不仅得到了很多观众的大力支持,也吸引了电影制片方的注意.据悉,由李连杰.文章和桂纶镁主演的电影<海洋天堂>制片方在了解了

YY主播生存堪忧 为赚钱不惜自虐一口气喝5瓶矿泉水

在线秀场已打了几轮擦边球,以前是色情,现在是自虐.4月14日,据读者反映,部分 YY主播生存状态堪忧,为了赚钱.不惜用自虐吸引眼球,如用生鸡蛋洗头.用鞋跟打嘴巴--一位主播向记者表示,这些都是无奈之举,YY已经变了,以前只为开心搞笑,现在只为欣赏别人残忍.一口气喝5瓶矿泉水提供线索的是杨先生,通过邮件,他给记者发来一段视频,视频里,一位名叫大牛的主播,在网吧中掏出一颗生鸡蛋,往地上磕碎,流出的蛋清.蛋黄往头上蹭.这项服务名称为"生鸡蛋洗头",完成之后,听众会给他刷131.4元的虚拟礼物

JAVA认证历年真题解析二(附答案)

问题描述 我在网上偶然看到一个网站,这个网站里面的资料非常全,除了一些免费的资料,还有网络视频,觉得非常不错,大家有兴趣或者需要,可以去看看[中华IT学习网]www.100itxx.com内容介绍>>本试卷共有45道题,每题后面都有详细解析.例:1.Whichofthefollowingrangeofshortiscorrect?A.-27--27-1B.0--216-1C.?215--215-1D.?231--231-1翻译下面哪些是short型的取值范围.答案 C解析 短整型的数据类型的长

Java代码实践12306售票算法(二)_java

周五闲来无事,基于上一篇关于浅析12306售票算法(java版)理论,进行了java编码实践供各位读者参考(以下为相关代码的简单描述) 1.订票工具类 1.1初始化一列车厢的票据信息 /** * 生成Ticket信息 * * @param train * @return */ public static List<Ticket> initTicketList(Train train) { List<Ticket> result = new ArrayList<Ticket&g

每周喝2瓶以上含糖碳酸饮料患胰腺癌风险加倍

全球每天有超过十亿人口在喝可乐.汽水等碳酸饮料,其中尤以年轻人为大宗.但你可能不知道,碳酸饮料中的"磷酸盐"可能会使老化加速,喝汽水其实一点都不青春阳光. 磷酸盐常被添加在非酒精饮料中,使味道更浓. 美国哈佛大学研究者通过动物实验显示,磷酸盐的加速老化作用,会使皮肤肌肉萎缩,皮肤萎缩皱纹当然会增加.过量磷酸盐还可能危害心脏和肾脏,也和骨质疏松.胰脏癌.肌肉无力甚至麻痹瘫痪有关. 此外,磷酸盐也被添加在许多经过加工处理的肉品.蛋糕和面包中.部分研究报告甚至认为,只要一周喝两罐碳酸饮料,就

味全乳酸菌零脂肪被指忽悠:喝2瓶等于1顿晚饭

味全"0脂肪"被指误导消费者 网友大呼上当中国网6月14日讯(实习记者 王宏杨)近日,一条关于味全乳酸菌饮品的微博得到网友的广泛关注,微博中提到:'别让零脂肪忽悠你',一瓶435ml的味全乳酸菌饮料,虽然没有脂肪,但含糖为70克(约15块方糖),对普通女性来说,喝两瓶等于多吃一顿晚饭!这条微博发出后,被"香港成报" "央视综艺" "网络新闻联播" "新商报" "健康时报" "微

Java 多线程实例详解(二)_java

本文承接上一篇文章<Java多线程实例详解(一)>. 四.Java多线程的阻塞状态与线程控制 上文已经提到Java阻塞的几种具体类型.下面分别看下引起Java线程阻塞的主要方法. 1.join() join -- 让一个线程等待另一个线程完成才继续执行.如A线程线程执行体中调用B线程的join()方法,则A线程被阻塞,知道B线程执行完为止,A才能得以继续执行. public class ThreadTest { public static void main(String[] args) {

JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例,我们暂时不讲了,我们直接来重点吧,关于JAVA的网络请求是怎么实现的?当然是HTTP协议,但是不可否认,他的概念和思想都是我们必须去涉及的,包括后面的tcp和socket等,好吧,我们开车吧! 一.JAVA网络请求概述 关于JAVA的网络请求,我们大致的可以分为以下几个分类 网络模式 OSI TCP