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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 止询初衷 中级黑马   /  2014-8-4 22:16  /  3155 人查看  /  25 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

          一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。
          当老农不和猫狗鱼在一起时,狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,则不会发生这种问题。 编程解决猫狗鱼过河问题。
       

25 个回复

倒序浏览
恶意刷贴会被扣分的
回复 使用道具 举报
先把猫拿过去,回来随便拿一个过去,再将猫带回来,将剩下的一个拿过去,最后回来拿猫
回复 使用道具 举报
李饶亮 老师的公开课 面对对象 猫狗鱼 过河问题,你到传智播客公开课里搜搜,很经典的讲解
回复 使用道具 举报
这么恶心的题 copy答案
回复 使用道具 举报
流程二  技术分就这么多了   
回复 使用道具 举报
灌水帖,鉴定完毕
回复 使用道具 举报
学习一下。。。。。。。。
回复 使用道具 举报
学习一下
回复 使用道具 举报
学习一下
回复 使用道具 举报
有意思的问题,哈哈。学习一下。
回复 使用道具 举报
大致思路:

if (猫 && 狗) ||  (猫 && 鱼)
the game over ;

else continue;
回复 使用道具 举报
  1. package com.itheima;

  2. import java.util.ArrayList;
  3. import java.util.List;

  4. public class Test10 {
  5.         // 用两个集合来描述河两岸
  6.         List<String> here = new ArrayList<String>();
  7.         List<String> there = new ArrayList<String>();

  8.         // 初始化猫、狗、鱼在here集合中
  9.         public Test10() {
  10.                 here.add("Dog");
  11.                 here.add("cat");
  12.                 here.add("fish");
  13.         }

  14.         // 定义一个方法isSafty()判断农夫离开一岸到另一岸时,是否安全,安全的标准是狗和鱼在一起,猫被老农带走。
  15.         public boolean isSafty(List<String> list) {
  16.                 if (list.contains("dog") && list.contains("cat")
  17.                                 || list.contains("cat") && list.contains("fish")) {
  18.                         return false;
  19.                 }
  20.                 return true;
  21.         }

  22.         public void toTake() {
  23.                 // 获取集合中的第一个元素,如果该元素是狗或者鱼,则不安全,将该元素删除,
  24.                 //并重新运行toTake方法,这时该元素会被置换为最后一个元素,保证农夫带动物的随机性。
  25.                 // 如果该元素是猫,则将其带走。
  26.                 String str = here.get(0);
  27.                 here.remove(str);
  28.                 if (isSafty(here)) {
  29.                         System.out.println("1农夫带着" + str + "去往对岸,这边还剩下" + here + ",对岸有"
  30.                                         + there);
  31.                         toThere(str);
  32.                 } else {
  33.                         here.add(str);
  34.                         toTake();
  35.                 }
  36.         }

  37.         public void toThere(String s) {
  38.                 // 如果河的另一边安全,则增加带来的动物
  39.                 if (isSafty(there)) {
  40.                         there.add(s);
  41.                         //当here中元素不存在时,说明三只动物都被带过河了。
  42.                         if (here.isEmpty()) {
  43.                                 System.out.println("农夫," + there + "都被你带过来了");
  44.                                 return;
  45.                         }
  46.                         //将猫放到对面后,再回去带其他动物
  47.                         if (isSafty(there)) {
  48.                                 System.out.println("2农夫回到原点,对岸有" + there);
  49.                                 toTake();
  50.                         } else {
  51.                                 String temp = there.get(0);
  52.                                 there.remove(temp);
  53.                                 System.out.println("3农夫带着" + temp + "回到原点,这边有" + here + ",对岸有"
  54.                                                 + there);
  55.                                 here.add(temp);
  56.                                 toTake();
  57.                         }
  58.                 }
  59.                 //如果不安全,则该元素删除,重新运行toTake方法,这时该元素会被置换为最后一个元素。
  60.                 else {
  61.                         there.remove(s);
  62.                         toTake();
  63.                 }
  64.         }

  65.         public static void main(String[] args) {
  66.                 new Test10().toTake();
  67.         }
  68. }
复制代码
回复 使用道具 举报
遇到这种编程题  我想我直接哭了

点评

直接吓尿了。。。。  发表于 2014-8-6 20:02
回复 使用道具 举报
呵呵,跟我考的一个题。
回复 使用道具 举报
掌柜的--刘饮 发表于 2014-8-4 23:47
李饶亮 老师的公开课 面对对象 猫狗鱼 过河问题,你到传智播客公开课里搜搜,很经典的讲解 ...

你好,请问怎么搜呢?我怎么找不到,我也考了这个题,我想看看老师是怎么解决的。看看我的答案跟老师思想想的一样吗?
回复 使用道具 举报

这是你自己写的,还是标准答案?
回复 使用道具 举报

不错,编的很好。不过我跟你的不一样,我还是分别将农民、三个动物都编程了对象。看起来没有你这种精简,你的重点在判断动物是否可以过河。学习了。
回复 使用道具 举报
何磊 发表于 2014-8-5 20:52
灌水帖,鉴定完毕

亲   为什么说这个贴是灌水帖呢
回复 使用道具 举报
这是基础测试? = =
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马