本帖最后由 new999 于 2014-9-21 09:46 编辑
- package com.itheima.test;
- public class EmptyBottles{
- public static void main(String[] args){
- final int pNum=3;
- //3空瓶=1瓶可乐+1可乐,也就是1空瓶=0.5瓶可乐,所以初始1瓶可乐=1.5瓶可乐
- //因此,最初只要买pNum*/1.5瓶可乐,就够pNum人喝
- int num=pNum*2/3;
- System.out.println("方法1:买来"+(pNum%3==0?num:num+1)+"瓶可乐,够"+pNum+"人喝");
- System.out.println("方法2:买来"+getBottles(pNum)+"瓶可乐,够"+pNum+"人喝");
- }
- private static int getBottles(int pNum) {
- //empty用于记录空瓶数,sum是实际喝到的瓶数,bottles2是换来的可乐。
- int sum, empty,bottles2;
- for (int i = pNum>>>1; i < pNum; i++) {
- sum = i;//初始瓶数i,喝掉i瓶,
- empty = i;//产生i瓶空瓶
- while ((bottles2=empty/3)!=0) {//空瓶换可乐
- sum += bottles2;//喝掉换来的可乐,
- empty = bottles2 + empty%3;//产生的空瓶再加上上次剩下的空瓶
- }
- if(empty==2){//向老板赊来1瓶,最后用3个空瓶偿还
- sum++;
- }
- //System.out.println("买来"+i+"瓶可乐,够"+sum+"人喝,最后剩下个"+empty+"空瓶");
- if(sum>=pNum){
- return i;
- }
- }
- return pNum;
- }
- }
复制代码 |