規定:
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);
}
}