黑马程序员技术交流社区
标题:
农夫带着猫狗鱼过河代码
[打印本页]
作者:
朙兲
时间:
2015-7-11 10:32
标题:
农夫带着猫狗鱼过河代码
看了好多代码,自己也写了好多。最后写了一个精简的,但是只能针对该题有效的代码。
import java.util.ArrayList;
import java.util.List;
/**
* 代码写的不好,只能针对这个三个动物过河问题,其他的都不行
*
*/
public class CrossRiver {
List<Anima> left = new ArrayList<Anima>();
List<Anima> right = new ArrayList<Anima>();
public static void main(String[] args) {
CrossRiver cros = new CrossRiver();
cros.cross();
}
public void cross(){
//初始化,将左边添加上三个动物
inniteAnima();
//右边动物数量到达三就不在移动了
while(right.size()!=3){
leftRemove();
}
}
private void leftRemove() {
//过河
Anima removAnima = left.remove(0);
//限定条件,如果是三个判断就复杂了 ,还得考虑过去了移除哪个的问题,这里限定对岸一个,过去一个
if(right.size()>0 && right.size() <2){
for(int i = 0;i<right.size();i++){
if(right.get(i).getAfraid() == removAnima.getContro() ||
removAnima.getAfraid() == right.get(i).getContro()){
//如果对边有制约 ,回流
left.add(removAnima);
break;
}else{
right.add(removAnima);
System.out.println("右岸添加一个动物"+removAnima.getName()+"--------"+right.toString());
break;
}
}
}else{
right.add(removAnima);
System.out.println("右岸添加一个动物"+removAnima.getName()+"--------"+right.toString());
}
}
private void inniteAnima() {
/*
狗0 猫 1 鱼 2
狗一怕一控制 0 -1 1
猫一怕一控制 1 0 2
鱼一怕一控制 2 1 3
如果想用俩个变量描述制约关系,就是一个的怕值,等于另一个的控制值,那就有制约关系
狗一怕一控制 0 1
猫一怕一控制 1 2
鱼一怕一控制 2 3
*/
Anima dog = new Anima("dog",0,1);
Anima cat = new Anima("cat",1,2);
Anima fish = new Anima("fish",2,3);
left.add(dog);
left.add(cat);
left.add(fish);
}
}
复制代码
代码个人感觉写的一般,只能针对该题解决问题。这种代码不好。
作者:
耀阳圣尊
时间:
2015-7-11 10:44
程序员中流传的一句话,能解决问题的就是好代码,想把代码写好并非一朝一夕。是需要经验累积的{:3_64:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2