package com.itheima;
/**
* 10、 一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。
* 当老农不和猫狗鱼在一起时,狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,
* 则不会发生这种问题。编程解决猫狗鱼过河问题。
* @author 张兆晖
*
*/
import java.util.ArrayList;
public class Test10 {
public static void main(String[] args)
{
new Test10().tohere();
}
// 创建一个集合,代表起始点.
ArrayList<String> here = new ArrayList<String>();
// 创建一个集合,代表终点.
ArrayList<String> there = new ArrayList<String>();
// 添加元素.
public Test10()
{
here.add("Dog");
here.add("cat");
here.add("fish");
}
// 定义一个方法,用来判断这三个动物之间关系.
public boolean isSafe(ArrayList<String> al)
{
if (al.contains("dog") && al.contains("cat") || al.contains("cat")
&& al.contains("fish"))
{
return false;
}
return true;
}
// 定义一个方法,将起点的元素送到终点.
public void tohere() {
String str = here.get(0);
here.remove(str);
if (isSafe(here)) {
System.out.println("1农夫带着" + str + "去往对岸,这边还剩下" + here + ",对岸有"
+ there);
toThere(str);
} else {
here.add(str);
tohere();
}
}
// 定义一个方法,用来查看终点的元素.
public void toThere(String s) {
if (isSafe(there)) {
there.add(s);
if (here.isEmpty()) {
System.out.println("4农夫," + there + "都被你带过来了");
return;
}
if (isSafe(there)) {
System.out.println("2农夫回到原点,对岸有" + there);
tohere();
} else {
String temp = there.get(0);
there.remove(temp);
System.out.println("3农夫带着" + temp + "回到原点,这边有" + here + ",对岸有"
+ there);
here.add(temp);
tohere();
}
} else {
there.remove(s);
tohere();
}
}
}
|
|