A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 朙兲 中级黑马   /  2015-7-11 10:32  /  544 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看了好多代码,自己也写了好多。最后写了一个精简的,但是只能针对该题有效的代码。
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. /**
  4. * 代码写的不好,只能针对这个三个动物过河问题,其他的都不行
  5. *
  6. */
  7. public class CrossRiver {
  8.         List<Anima> left = new ArrayList<Anima>();
  9.         List<Anima> right = new ArrayList<Anima>();

  10.         public static void main(String[] args) {
  11.                 CrossRiver cros = new CrossRiver();
  12.                 cros.cross();
  13.         }
  14.         public void cross(){
  15.                 //初始化,将左边添加上三个动物
  16.                 inniteAnima();
  17.                 //右边动物数量到达三就不在移动了
  18.                 while(right.size()!=3){
  19.                                 leftRemove();
  20.                 }
  21.                
  22.         }

  23.         private void leftRemove() {
  24.                 //过河
  25.                 Anima removAnima = left.remove(0);
  26.                 //限定条件,如果是三个判断就复杂了 ,还得考虑过去了移除哪个的问题,这里限定对岸一个,过去一个
  27.                 if(right.size()>0 && right.size() <2){
  28.                         for(int i = 0;i<right.size();i++){
  29.                                 if(right.get(i).getAfraid() == removAnima.getContro() ||
  30.                                    removAnima.getAfraid() == right.get(i).getContro()){
  31.                                         //如果对边有制约 ,回流
  32.                                         left.add(removAnima);
  33.                                         break;
  34.                                 }else{
  35.                                         right.add(removAnima);
  36.                                         System.out.println("右岸添加一个动物"+removAnima.getName()+"--------"+right.toString());
  37.                                         break;
  38.                                 }
  39.                         }
  40.                 }else{
  41.                         right.add(removAnima);
  42.                         System.out.println("右岸添加一个动物"+removAnima.getName()+"--------"+right.toString());
  43.                 }
  44.                
  45.                
  46.                
  47.         }

  48.         private void inniteAnima() {
  49.                 /*
  50.                 狗0   猫 1  鱼   2
  51.                 狗一怕一控制  0 -1 1
  52.                 猫一怕一控制   1 0  2
  53.                 鱼一怕一控制   2 1  3
  54.                
  55.                 如果想用俩个变量描述制约关系,就是一个的怕值,等于另一个的控制值,那就有制约关系
  56.                 狗一怕一控制  0 1
  57.                 猫一怕一控制   1 2
  58.                 鱼一怕一控制   2 3
  59.                 */
  60.                
  61.                 Anima dog = new Anima("dog",0,1);
  62.                 Anima cat = new Anima("cat",1,2);
  63.                 Anima fish = new Anima("fish",2,3);
  64.                 left.add(dog);
  65.                 left.add(cat);
  66.                 left.add(fish);
  67.                
  68.         }
  69.        
  70. }
复制代码

代码个人感觉写的一般,只能针对该题解决问题。这种代码不好。

1 个回复

倒序浏览
程序员中流传的一句话,能解决问题的就是好代码,想把代码写好并非一朝一夕。是需要经验累积的{:3_64:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马