规定:
1只有b2瓶子为空时,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);
}
}