算法-空瓶换啤酒问题

有题:

酒神小明与5个酒鬼朋友有210块钱想喝啤酒,啤酒3元一瓶,4个空瓶可以换一瓶啤酒,

问酒神小明和酒鬼朋友们一共能喝到多少瓶啤酒?(先告诉你答案:93)

怎么得到呢?
 分析:

能喝到的啤酒数=210块钱能买到的啤酒数+210块钱买到的啤酒空瓶数换得的啤酒数
 210块钱买到的啤酒数很好计算,就是总价/单价=210/3;
 空瓶换得的啤酒数怎么算呢?
 如本题初始空瓶数=210/3=70个,每次能换的啤酒数=空瓶数/4
 1.这70个瓶子能换70/4=17瓶啤酒还剩2个酒瓶
 2.17瓶啤酒喝完后又有17个空瓶,加上剩下的2个,还剩19个,有可以换19/4=4瓶啤酒还剩3个酒瓶
 3.以此类推,当换到的酒瓶+上次剩下的酒瓶数不足以换一瓶啤酒的时候,就可以得到他们最终能喝到多少瓶了.
 
 实现:

 public static void main(String []args) {
		int money = 210;//总金额
		int subscriptionRatio = 4;//兑换比例
		int price = 3;//单价
       System.out.println("能喝  "+ 
		(money/price+getBeerByBottle(money/price,subscriptionRatio))+" 瓶");
    }
	//获取能换多少瓶水
	//a是空瓶数
	//b是兑换比例,如本题4个空瓶兑换1瓶,b就是4
	public static int getBeerByBottle(int a,int b){
		
		if(a<b){//当空瓶数小于兑换比例的时候,能换0瓶
			return 0;
		}
		//本次兑换啤酒数a/b,剩下瓶子数a%b
		//喝完a/b瓶后剩下瓶子数a/b+a%b
        //拿剩下的瓶子继续换啤酒
		return a/b+getBeerByBottle(a/b+a%b,b);
	
	}

最终得到结果是93瓶,其他类似的题可以直接改变总价,兑换比例或者单价求出。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值