您的位置:首页 > 其它

算法初体验:10元买啤酒

2016-01-21 10:10 375 查看
[code]    /*啤酒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);
        }
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: