过河的方式:
package river;
public enum ActionCode {
// 一个警察过去
one_plice_go("one_plice_back"),
// 一个囚徒过去
one_prisoner_go("one_prisoner_back"),
// 两个警察过去
two_plice_go("two_plice_back"),
// 两个囚徒过去
two_prisoner_go("two_prisoner_back"),
// 一个警察一个囚徒过去
police_prisoner_go("police_prisoner_back"),
// 一个警察回来
one_plice_back("one_plice_go"),
// 一个囚徒回来
one_prisoner_back("one_prisoner_go"),
// 两个警察回来
two_plice_back("two_plice_go"),
// 两个囚徒回来
two_prisoner_back("two_prisoner_go"),
// 一个警察一个囚徒回来
police_prisoner_back("police_prisoner_go"),
//未知状态
unknown_state("unknown_state");
private String ac;
private ActionCode(String s)
{
ac=s;
}
// 是否是互斥的
public boolean isRepel(ActionCode _ac)
{
if(ActionCode.valueOf(ac).equals(_ac))
{
return true;
}else{
return false;
}
}
@Override
public String toString() {
switch (this) {
case one_plice_go:
return "一个警察过去";
case one_prisoner_go:
return "一个囚徒过去";
case two_plice_go:
return "两个警察过去";
case two_prisoner_go:
return "两个囚徒过去";
case police_prisoner_go:
return "一个警察一个囚徒过去";
case one_plice_back:
return "一个警察回来";
case one_prisoner_back:
return "一个囚徒回来";
case two_plice_back:
return "两个警察回来";
case two_prisoner_back:
return "两个囚徒回来";
case police_prisoner_back:
return "一个警察一个囚徒回来";
default:
break;
}
return null;
};
}
过河的状态:
package river;
public class ActionState implements Cloneable{
private int police_count;
private int persioner_count;
private boolean isHaveship;
public ActionState(int police_count, int persioner_count, boolean isHaveship) {
this.police_count = police_count;
this.persioner_count = persioner_count;
this.isHaveship = isHaveship;
}
public int getPolice_count() {
return police_count;
}
public void police_count_down(int down)
{
police_count-=down;
}
public void police_count_up(int up)
{
police_count+=up;
}
public void persioner_count_down(int down)
{
persioner_count-=down;
}
public void persioner_count_up(int up)
{
persioner_count+=up;
}
public void setPolice_count(int policeCount) {
police_count = policeCount;
}
public int getPersioner_count() {
return persioner_count;