三个瓶子喝水问题

191 阅读1分钟

三个空瓶子能换一瓶水,可以找老板借瓶子,但是必须得还,随机传入一个空瓶子数量n,最多喝几瓶水?

直接上代码

/**
 * @author ice_cola
 * @version 1.0
 */
public class Test {
    private int sum = 0; // 喝水的次数

    public static void main(String[] args) {
        Test t =  new Test();
        t.drink(1000);
        System.out.println(t.sum);
    }
    public void drink(int count){ // 空瓶个数是 count

        // 这轮的空瓶  可以换几瓶水?
        int residue = (count) / 3 ;
        //  开始喝水
        sum += residue; // 添加喝水的次数
        // 本轮 剩余空瓶重置 = 喝完水的空瓶 + 没有兑换的空瓶;
        int rest =  residue + count - residue*3  ;
        // 开始再次喝水,3个空瓶子换一个空瓶,在加上上一轮剩余的空瓶数量
        if (rest >= 3){
            drink(  rest);
        }else if(rest == 2){ // 当还有 2 个空瓶的时候,可以借一个空瓶喝完了睡还回去
            drink(   rest + 1);
        }
        // 当空瓶 1 个的时候借了换不了

    }
}

检查方法, 三个空瓶 等于 一个空瓶 + 可以喝的水,所以 n 个空瓶可以喝 n/2 瓶水(向下取整)