算法初體驗:10元買啤酒

    /*啤酒2元一瓶,
    2個空瓶可以換一瓶,
    4個瓶蓋可以換一瓶,
    問10塊錢可以換幾瓶*/

public class Test {
    private static final int onemoney = 2;//一瓶2塊錢
    private static final int emptybeer = 2;//2個空瓶換一瓶
    private static final int capbeer = 4;//4個瓶蓋換一瓶

    private static final int MYMONEY = 10;//我的錢
    private static int time=0;//一共換了幾次
    private static int sumbeer = 0;//總共喝了多少瓶

    public static void main(String[] args) {
        int time_1_beer = MYMONEY/onemoney;
        sumbeer = time_1_beer;
        change(time_1_beer,time_1_beer);
        System.out.println("一共買了1次,換了"+time+"次,喝了"+sumbeer+"瓶");
    }

    public static void change(int empty,int cap){
        time++;
        System.out.println(time+"要去交換啤酒了,當前我的:空瓶數="+empty+",瓶蓋數="+cap);
        int num_empty = empty / emptybeer;//空瓶能換幾瓶
        int num_empty_leave = empty % emptybeer;//空瓶換完剩下幾瓶
        System.out.println("--空瓶換了"+num_empty+"瓶啤酒,剩下了"+num_empty_leave+"個空瓶");

        int num_cap = cap / capbeer;//瓶蓋能換幾瓶
        int num_cap_leave = cap % capbeer;//瓶蓋換完剩下幾瓶
        System.out.println("--瓶蓋換了"+num_cap+"瓶啤酒,剩下了"+num_cap_leave+"個瓶蓋");

        int num_changeAll = num_empty + num_cap;
        sumbeer = sumbeer + num_changeAll;

        int num_empty_now = num_empty_leave + num_changeAll;//當前剩下的空瓶數= 換完剩下的+換回來又喝完的
        int num_cap_now = num_cap_leave + num_changeAll;//當前剩下的空瓶數= 換完剩下的+換回來又喝完的

        if(num_empty_now >= emptybeer || num_cap_now >= capbeer){
            change(num_empty_now, num_cap_now);
        }else{
            System.out.println();
            System.out.println("不能再換了,剩下的空瓶數"+num_empty_now+",剩下的瓶蓋數"+num_cap_now);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章