package liuhui;
//过河类
public class FerryBoat{
public Religious religious[];
public WildMan wildMan[];
public int lastLR;
public int lastRL;
public FerryBoat(){
this.lastLR=999;
this.lastRL=999;
}
public int leftMonk(){
int sum=0;
for(int i=0;i<religious.length;i++)
if(religious[i].isLeft())sum++;
return sum;
} //左岸道士人数
public int rightMonk(){
int sum=0;
for(int i=0;i<religious.length;i++)
if(religious[i].isRight())sum++;
return sum; } //右岸道士人数
public int leftWild(){
int sum=0;
for(int i=0;i<wildMan.length;i++)
if(wildMan[i].isLeft())sum++;
return sum; } //左岸野人数目
public int rightWild(){
int sum=0;
for(int i=0;i<wildMan.length;i++)
if(wildMan[i].isRight())sum++;
return sum;
}//右岸野人数目
public void leftRight(Religious x,WildMan y){
x.setLeft(false);
x.setRight(true);
y.setLeft(false);
y.setRight(true);
}
public void leftRight(Religious x1,Religious x2){
x1.setLeft(false);
x1.setRight(true);
x2.setLeft(false);
x2.setRight(true);
} //将两个道士移到右岸
public void leftRight(WildMan y1,WildMan y2){
y1.setLeft(false);
y1.setRight(true);
y2.setLeft(false);
y2.setRight(true);
} //将两个野人移到右岸
public void leftRight(Religious x){
x.setLeft(false);
x.setRight(true);
} //将一个道士移到右岸
public void leftRight(WildMan y){
y.setLeft(false);
y.setRight(true);
} //将一个野人移到右岸
public void rightLeft(Religious x,WildMan y){
x.setLeft(true);
x.setRight(false);
y.setLeft(true);
y.setRight(false);
}//将一个道士和一个野人移到左岸
public void rightLeft(Religious x1,Religious x2){
x1.setLeft(true);
x1.setRight(false);
x2.setLeft(true);
x2.setRight(false);
}//将两个道士移到左岸
public void rightLeft(WildMan y1,WildMan y2){
y1.setLeft(true);
y1.setRight(false);
y2.setLeft(true);
y2.setRight(false);
}//将两个野人移到左岸
public void rightLeft(Religious x){
x.setLeft(true);
x.setRight(false); }
public void rightLeft(WildMan y){
y.setLeft(true);
y.setRight(false);
}//将1个野人移到左岸
public int valueLeftRight(){
if(leftMonk()!=0&&leftWild()!=0){
if(rightMonk()+1>=rightWild()+1&&this.lastRL!=8)return 0; }
if(leftMonk()!=0)
{
if(leftMonk()>=2)
{if(leftMonk()-2!=0&&leftMonk()-2>=leftWild()&&this.lastRL!=0)return 1;
if(leftMonk()-2==0&&this.lastRL!=0)return 1;
}
if(this.lastRL!=1){
if(leftMonk()-1!=0&&leftMonk()-1>=leftWild())return 2;
if(leftMonk()-1==0)return 2; }}
if(leftWild()!=0){
if(leftWild()>=2&&this.lastRL!=4){
if(rightMonk()>=rightWild()+2&&rightMonk()!=0)return 3;
if(rightMonk()==0)return 3; }
if(this.lastRL!=5){
if(rightMonk()!=0&&rightMonk()>=rightWild()+1)return 4;
if(rightMonk()==0)return 4; } }
return 5; }
public int valueRightLeft(){
if(rightMonk()!=0){
if(rightMonk()>=2)
{
if((rightMonk()-2)!=0&&(rightMonk()-2>=rightWild())&&this.lastLR!=1)return 0;
if((rightMonk()-1)!=0&&(rightMonk()-1>=rightWild())&&(leftMonk()+1>=leftWild())&&this.lastLR!=2)return 1;
}
if((rightMonk()-1)!=0&&(rightMonk()-1>=rightWild())&&(leftMonk()+1>=leftWild())&&this.lastLR!=2)return 2;
if(rightMonk()-1==0&&this.lastLR!=2)return 3;
if(this.lastLR!=0)
{
if(leftMonk()+1>=leftWild()+1)
{
if(rightMonk()-1!=0&&rightMonk()-1>=rightWild()-1)return 8;
if(rightMonk()-1==0)return 8;
}
}
}
if(rightWild()!=0)
{
if(rightWild()>=2){
if(leftMonk()!=0&&leftWild()+2<=leftMonk()&&this.lastLR!=3)return 4;
if(leftMonk()!=0&&leftWild()+1<=leftMonk()&&this.lastLR!=4)return 5;
}
if(leftMonk()!=0&&leftWild()+1<=leftMonk()&&this.lastLR!=4)return 6;
if(leftMonk()==0&&lastLR!=4)return 7; if(this.lastLR!=0)
{
if(leftMonk()+1>=leftWild()+1)
{
if(rightMonk()-1!=0&&rightMonk()-1>=rightWild()-1)return 8;
if(rightMonk()-1==0)return 8;
}
}
}
return 9;}
public void display()
{
for(int i=0;i<religious.length;i++)
{
if(religious[i].isLeft())System.out.println(religious[i].getName()+" 在左岸上 ");
else System.out.println(religious[i].getName()+" 在右岸上 ");
}
for(int i=0;i<wildMan.length;i++)
{
if(wildMan[i].isLeft())System.out.println(wildMan[i].getName()+" 在左岸上");
else System.out.println(wildMan[i].getName()+" 在右岸上");
}
System.out.print("此时左岸道士:"+this.leftMonk()+",左岸野人:"+this.leftWild());
System.out.println("右岸道士:"+this.rightMonk()+",右岸野人:"+this.rightWild());
}
}