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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

9 个回复

倒序浏览
本帖最后由 ℃葫芦 于 2015-8-8 22:53 编辑

我知道是1、带猫过河  空船回来
2、带狗过河 带猫回来
3、带鱼过河 空船回来
4、带猫过河
具体的思路是这样,  可怎么用编程表现出来?
回复 使用道具 举报
这个........考的是逻辑分析能力吧,具体怎么实现我也不懂,坐等大神
回复 使用道具 举报
bgxpf 发表于 2015-8-9 00:42
这个........考的是逻辑分析能力吧,具体怎么实现我也不懂,坐等大神

逻辑分析能力,我已经分析完了,难道要用System.out.pringln("小猫过河“);来实现吗
回复 使用道具 举报
定义变量,,貌似可以用逻辑语句加上判断语句,结合一下。
回复 使用道具 举报

        解决思路:猫不能和其他动物单独在一起
        第一步:老农带着猫渡河
        第二步:把猫放在对岸,老农自己回去接狗和鱼
        第三步:老农带着狗或者鱼渡河,假设带狗
        第四步:老农把猫带回去,把狗自己放在河对岸
        第五步:老农把猫放在和正岸,带着鱼一起渡河
        第六步:老农自己回去
        第七步:老农带着猫渡河,这样他们就都过去了,也不会发生冲突
回复 使用道具 举报
巧克黑力 发表于 2015-8-9 09:00
定义变量,,貌似可以用逻辑语句加上判断语句,结合一下。

狗  猫  鱼   int dog  cat fish;?
过河是为1   没过河是为0  ?
回复 使用道具 举报
求大神支招,不会写代码。
回复 使用道具 举报
我也是这个问题,先说说我的思路吧。
定义一个boolean 数组arr,其中角标从0-4分别为农夫狗猫鱼
默认数组中的全部元素都为false,即在河这边,那么使用true标记目标在河对面。
初始条件 全部元素都为false
设定循环 每次循环开始满足条件的元素取反,即渡河。
设定条件 1.农夫在河这边的时候,允许存在猫狗鱼在和农夫同一岸侧,即允许arr[0]==arr[1]==arr[2]==arr[3]
2.当农夫不在河这边时,不允许猫和鱼或狗和鱼在同一侧,即不允许存在arr[0]!=arr[1]&arr[2]或arr[0]!=arr[2]&arr[3];
3.除农夫外上次取反的值这次不能再一次取反。即带过来的动物不能直接带回去,因为这样没意义。。
循环结束条件 当arr[0]==arr[1]==arr[2]==arr[3]==true时结束循环,即全部渡河。

这样可以得到真值表,然后读真值表就可以得出过程啦!不过思路在了变成程序还是个问题。。
回复 使用道具 举报
黄蒙 发表于 2015-8-9 20:53
我也是这个问题,先说说我的思路吧。
定义一个boolean 数组arr,其中角标从0-4分别为农夫狗猫鱼
默认数组中 ...

当然其中还有一些细节,比如说两岸都满足条件2时可以允许只农夫渡河啊以及当农夫渡河后满足该条件则必须随机带一动物渡河。总的来说感觉很麻烦,如果只是用普通的逻辑判断来看的话
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马