泊松分酒(窮舉法)

規定:
1只有b1瓶子爲空時,b1才往b2瓶子裏倒酒
2只有瓶子b3爲空時,b2才往b3瓶子裏倒酒
3只有瓶子b3爲滿時,b3才往b1瓶子裏倒酒

public class ShareWine {
    private int b1 = 12;
    private int b2 = 8;
    private int b3 = 5;
    private int m =6;//目標酒量
    /**
     * b1-->b2-->b3-->b1
     * @param bb1  b1 瓶子的現有酒量
     * @param bb2  b2 瓶子的現有酒量
     * @param bb3  b3 瓶子的現有酒量
     */
    public void backBottle(int bb1,int bb2,int bb3) {
        System.out.println("bb1:"+bb1+",bb2:"+bb2+",bb3:"+bb3);
        if(bb1 ==m || bb2 ==m || bb3 ==m) {
            System.out.println("酒分好了"+m);
            return;
        }
        if(bb2!=0&&bb3!=b3) {
            if(bb2+bb3<=b3) {
                backBottle(bb1,0,bb2+bb3);
            }else {
                backBottle(bb1,bb2-(b3-bb3),b3);
            }
        }else if(bb3 ==b3) {
            if(bb3+bb1<=b1) {
                backBottle(bb1+bb3,bb2,0);
            }else {
                backBottle(b1,bb2,bb3-(b1-bb1));
            }
        }else if(bb2==0) {
            if(bb1<=b2) {
                backBottle(0,bb1,bb3);
            }else {
                backBottle(bb1-b2,b2,bb2+bb3);
            }
        }
    }

    public static void main(String[] args) {
        ShareWine sw = new ShareWine();
        sw.backBottle(12, 0, 0);
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章