黑马程序员技术交流社区
标题:
一个JAVA题,有木有大神来简化
[打印本页]
作者:
wodenhaowzg
时间:
2014-1-17 18:04
标题:
一个JAVA题,有木有大神来简化
本帖最后由 wodenhaowzg 于 2014-1-17 18:40 编辑
一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。当老农不和猫狗鱼在一起时,狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,则不会发生这种问题。编程解决猫狗鱼过河问题。有木有大神能把这道题写的简单点。。网上复杂的代码我就不贴了。。自己做也是很费劲
作者:
高丽华
时间:
2014-1-17 18:12
//思路:先带猫过去,然后回来把狗带过,把猫带回来,再把鱼带过去,再回来带猫.
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();}
}
}
复制代码
这是基础测试题吧!我也做了这道题!你借鉴借鉴吧!
作者:
wodenhaowzg
时间:
2014-1-17 18:34
嗯 代码试了 不错 这代码是你写的么 厉害
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2