本帖最后由 牛牛宝 于 2014-12-7 00:44 编辑
本人产地河北,在没有来北京前,不知道编程是什么东东,自从遇到唐僧后才了解,很神秘,但依然继续以前的工作,在北京找工作,没学历,没经验,在北京找工作真的好难,我不想做面试达人,可还是面试了将近20家装饰 公司,最后终于找到一份工作,公司挺大的却是第三方,不停的作图,也没有结果,后来面试一个漫咖啡加盟公司,我的上司是一个韩国设计师,还带一翻译,面试还算顺利,后来打了好几个电话,我还是毅然的拒绝了,由于我的能力有限,在哪行都要从头开始学,再埋头流汗也就那么点币币,心里的埋藏的那点痒痒变的一发不可收拾,开始疯狂的学习毕姥爷的java基础视频,生动,有趣,让人轻松学习.... 30天的视频,我的进度还是慢了,从早晨欧了一个上午到11点才提交自荐信,虽然白杨老师下午3点钟给我审批通过9.0分,但是焦急的心情还是我们刷新了不知多少遍,自荐信会不会不通过....迫不急待的下载我的测试题,还好,8道题都还行,全排列的问题,设计到递归,最尽力伤神的就是最后一道老农带猫狗鱼过河,让我想了两天,好羞愧,真的好想进黑马,修成正果。
看过大神的解答,我开始自己的 难点一:老农过河要带哪个动物 难点二:老农离开时要判断剩下的动物发全问题,猫是发生问题的源头,不能单独和其它动物在一起 首先定义两个集合,左集合为正岸,右集合为对岸 老农过河第一次带哪个动物过河,按照面向对象的思想,老农带哪个动物过河都行,只要不发生问题就行,其它不管,所以老农要自己尝试,让老农永远从左集中的0角标开始带动物,老农带农0角标的动物(left.remove(0)),发现出现问题,放回左集中add()的方法,是在集合尾部添加的,所以老农在尝试的时候就不会重复,即便是老农返回正岸再带走动物时,也不会带走刚带回来的动物,直到右集中元素为4个时,渡河成功,写的不好,望大神们多请指点!!! 10、 一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。
* 当老农不和猫狗鱼在一起时,狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,则不会发生这种问题。编程解决猫狗鱼过河问题。
public class Test10 {
// left集合是河的正岸,right集合为河的对岸
List<String> left = new ArrayList<String>();
List<String> right = new ArrayList<String>();
public Test10() {//初始化时,这岸就有老农,鱼,猫,狗
left.add("farmer");
left.add("fish");
left.add("dog");
left.add("cat");
} public static void main(String[] args) {
//创建 对象
Test10 t=new Test10();
//调用方法渡河
t.run();
} public void run() {
while(left.size()>1){
//老农要带走一个动物,遍历集合中的角标,老农从0角标开始带走
for (int index = 0; left.size()>0; index++) {
//老农要渡河
left.remove("farmer");
//老农要带走的动物
String s=left.get(0);
left.remove(s);
//老农带走该动物时,看正岸是否安全
if(isSafe(left)){
//如果安全,对岸添加该动物和老农
right.add(s);
right.add("farmer");
System.out.println("老农带着"+s+"到对岸");
//如果对岸元素为4时,则老农和动物成功渡河
if(right.size()==4){
break;
}
//老农要返回,回接其它的动物
right.remove("farmer");
//离开对岸时,看是否能安全
if(isSafe(right)){
//如果安全,老农独自离开
System.out.println("老农独自回到对岸");//老农独自回去
}else{
//如果离开时不安全,老农要带一个动物离开,因为老农刚带过来的添加到最后一个角标,所以要从0角标开始带走,肯定不是刚才带来的那个动物
String s2=right.get(0);
//S2该动物离开对岸
right.remove(s2);
//老农和S2回到正岸,根据集合的add()方法特点,从集合的尾部添加
left.add(s2);
left.add("farmer");
System.out.println("老农带着"+s2+"返回");
}
}else{
//老农带着该动物到对岸时,发现不安全,要放下,重新开始。
left.add(s);
left.add("farmer");
}
}
}
//right.size()==4,break跳出后,老农带着动物都渡河到对岸,成功!
System.out.println("老农带着动物都渡河到对岸,成功!");
}
//判断是否安全的方法
public boolean isSafe(List<String> list){
//定义一个标记
boolean b=true;
//如果两岸的动物大于1时,老农不在,猫和其它动物单独在一起,不安全
if(list.size()>1&&list.contains("cat")&&!list.contains("farmer")){
b=false;
}
return b;
} }
|