public class Text10 {
/**
* 910、 一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。当老农不和猫狗鱼在一起时,
* 狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,则不会发生这种问题。编程解决猫狗鱼过河问题。
*
* @author zety-li
*
* 思考:先带猫过去,自己回来再狗过去,把猫带回来,把鱼带过去,自己回来在带猫。
* */
public static void main(String[] args) {
ArrayList<String> an = new ArrayList<String>();//原来岸上的动物
ArrayList<String> duian = new ArrayList<String>();//过河后岸上的动物
an.add("ren");
an.add("fich");
an.add("dog");
an.add("cat");
goToRiver(an,duian);
System.out.println(duian);
}
public boolean heXie(ArrayList<String> an) {//当某一个岸上的动物和谐时候返回true否则false
boolean b = true;
if(an.size()>1 && an.contains("cat")&&!an.contains("ren")){
b= false;
}
return b;
}
public static void goToRiver(ArrayList<String> an,ArrayList<String> duian){
Text10 t = new Text10();//建立Text对象,调用heXie()方法
while(an.size()>1){
an.remove("ren");//人必须过河所以从原岸删除
Random rd = new Random();//建立随机数,随便带走一个动物
int index = rd.nextInt(an.size());
if ( an.size() > 1 && index == an.size()){ //老农不能带走刚带回来的动物
an.add("people");
continue;
}
String s = an.get(index);//随便带走一个动物
an.remove(index);