アルゴリズム初体験:10元でビールを買う

4397 ワード

    /*  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);
        }
    }
}