黑马程序员技术交流社区
标题:
java中的老农过河的题目
[打印本页]
作者:
杨博
时间:
2014-6-9 21:10
标题:
java中的老农过河的题目
本帖最后由 杨博 于 2014-6-13 10:01 编辑
java基础题中有一道老农过河的题目,看到后没有思路。就是无法把逻辑思维准确的转化成程序语言。如果这方面很弱,需要加强哪方面的训练呢。请不吝赐教,谢谢。
谢谢各位的解答,提问结束。
作者:
黑马粉、峥
时间:
2014-6-9 21:30
//一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。当老农不和猫狗鱼在一起时,狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,则不会发生这种问题。编程解决猫狗鱼过河问题。
import java.util.ArrayList;
import java.util.List;
//先带猫过去,然后回来把狗带过,把猫带回来
//再把鱼带过去,再回来带猫
public class Test10
{
ArrayList<String> here = new ArrayList<String>();
ArrayList<String> there = new ArrayList<String>();
public boolean isSafty(List list)
{
if (list.contains("dog") && list.contains("cat")
|| list.contains("cat") && list.contains("fish"))
{
return false;
}
return true;
}
public Test10()
{
here.add("Dog");
here.add("cat");
here.add("fish");
}
public void toTake()
{
String str = here.get(0);
here.remove(str);
if (isSafty(here))
{
System.out.println("1农夫带着" + str + "去往对岸,这边还剩下" + here + ",对岸有" + there);
toThere(str);
}
else
{
here.add(str);
toTake();
}
}
public void toThere(String s)
{
if (isSafty(there))
{
there.add(s);
if(here.isEmpty())
{
System.out.println("农夫,"+there+"都被你带过来了");
return;
}
if(isSafty(there))
{
System.out.println("2农夫回到原点,对岸有" + there);
toTake();
}
else
{
String temp=there.get(0);
there.remove(temp);
System.out.println("3农夫带着"+temp+"回到原点,这边有" + here + ",对岸有" + there);
here.add(temp);
toTake();
}
}
else
{
there.remove(s);
toTake();
}
}
public static void main(String[] args)
{
new Test10().toTake();
}
}
复制代码
作者:
Solomon
时间:
2014-6-10 08:46
刚开始我也是这样,学的时候很清晰,自己看题要敲代码了就没思路了,也无从下手!!!
作者:
superob123
时间:
2014-6-10 08:57
当初基础测试就跪在这一题,后来是看了别人的思路才把它写出来,这题是先把思路理清才好写
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2