一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。当老农不和猫狗鱼在一起时,狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,则不会发生这种问题。编程解决猫狗鱼过河问题。
import java.util.ArrayList;
import java.util.List;
import java.util.Random;/*** 一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。当老农不和猫狗鱼在一起时,狗会咬猫,猫会吃鱼,* 当老农和猫狗鱼在一起时,则不会发生这种问题。编程解决猫狗鱼过河问题。* * 思路:* 1.猫不能和其他两种动物在一起* 2.先把猫带到对岸* 农夫自己回来* 农夫把狗或鱼带到对岸* 农夫把猫带回来* 农夫再把剩下的动物带到对岸* 农夫自己回来* 农夫把猫带到对岸* @author xiajie**/
public class Test10 {//定义猫狗鱼变量private static final String cat = " 猫 ";private static final String dog = " 狗 ";private static final String fish = " 鱼 ";private static final String farmer = " 农夫 ";private static List<String> left = new ArrayList<String>();//左岸的集合private static List<String> right = new ArrayList<String>();//右岸的集合//在无参构造方法中将猫狗鱼添加到left集合中去public Test10(){left.add(fish);left.add(dog);left.add(farmer);left.add(cat);}public static void main(String[] args) {new Test10().cross();//实例化本来对象并调用过河方法}public static void cross(){//当左岸有动物就一直继续while(left.size() > 1){left.remove(farmer);//农夫一定要带着一个动物渡河 Random random = new Random();//老农随机带走一直动物int index = random.nextInt(left.size());//产生的随机数不能大于总个数,即产生了一个 不大于left.size的数字if(index == left.size()-1 && left.size()>1){//为防止老农带走刚带回来的动物,因为这个List中存储数据是先进先出的所以,不能是最后的一个数,因为最后一个数表示的是农夫刚带回来动物,最后加如leftList中的left.add(farmer);continue;//continue 跳过当前循环体continue后面的代码,继续执行下一个循环}String animal = left.get(index);//随机产生的动物left.remove(animal);//带走随机产生的一个动物if(isFriendly(left)){//如果老农带走该动物后,正岸没有冲突,则带走该动物right.add(farmer);//老农和动物到岸,加入Left集合中区right.add(animal);System.out.println("老农带着"+animal+"到了对岸");if(right.size() == 4){ //当老农和动物全部到达对岸,则渡河完成break;//break 跳出当前循环体}right.remove(farmer);//老农返回if(isFriendly(right)){//如果老农独自返回右岸和谐,则让老农独自返回left.add(farmer);System.out.println("老农独自返回");}else{//否则老农要随机带一直动物回来String animal2 = right.get(random.nextInt(right.size()));while(animal2.equals(animal)){animal2 = right.get(random.nextInt(right.size()));}right.remove(animal2);left.add(farmer);left.add(animal2);//老农带着一个动物返回System.out.println("老农带着"+animal2+"返回");}}else{//如果老农带走该动物后,正岸发生冲突,则放回动物,重新加入Left集合中去left.add(animal);left.add(farmer);}}System.out.println("所有动物都成功过河了,完成任务!!!");}//用来判断两种动物在一起是不是和谐public static boolean isFriendly(List<String> list){boolean flag ;//如果猫和其他的在一起,而没有人则不和谐if(list.size() >1 && list.contains(cat) && !list.contains(farmer)){flag = false ;}else{flag = true ;}return flag;}
}
注意:一定要让程序根据题目的条件自己选择执行,不能按照自己的想法去指定程序运行的步骤。
输出结果:
老农带着 猫 到了对岸
老农独自返回
老农带着 鱼 到了对岸
老农带着 猫 返回
老农带着 狗 到了对岸
老农独自返回
老农带着 猫 到了对岸
所有动物都成功过河了,完成任务!!!
一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。当老农不和猫狗鱼在一起时,狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,则不会发生这种问题。编程解决猫狗鱼过河问题。相关推荐
- /* 商人过河的问题 假如有三个商人各带一个随从要过河。 只有一条船得需要他们划每次只能坐两个人,条件是任何一岸的随从多于商人时随从就会抢劫商人。 请问这三个商人怎样才能安全过河? */...
*/ import java.util. * ; public class Test4{ /** 内部类,用来把保存过河过程中的路线和状态. * 五个属性: * to为ture表示去对岸,否则表示从对 ...
- 黑马程序员-10.一位老农带着猫、狗、鱼过河
------ Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 题目是10. 一位老农带着猫.狗.鱼过河,河边有一条船,每次老农只能带一只动物过河.当老农不和 ...
- 老农解决猫狗鱼的问题(黑马基础习题)
package com.itheima; import java.util.LinkedList; import java.util.List; /** * 题目: * 10. 一位老农带着猫.狗 ...
- 《狂飙》台词“老默我想吃鱼了”被抢注商标
<狂飙>台词"老默我想吃鱼了"被抢注商标,#老默我想吃鱼了被抢注商标 #老默我想吃鱼了 #告诉老默我想吃鱼了 #商标被抢注 #狂飙 老默我想吃鱼了被抢注商标 近期,电视 ...
- 【训练4】猫吃鱼,狗吃肉(匿名内部类)
[训练4]猫吃鱼,狗吃肉 参照下面的代码,创建Animal类的匿名子类对象,重写eat()方法,执行该方法后会在控制台打印"猫吃鱼,狗吃肉"字样. /*[训练4]猫吃鱼,狗吃肉* ...
- Java主人喂猫吃鱼的实验总结,小猫吃鱼的作文4篇
小猫吃鱼的作文4篇 小猫吃鱼的作文1 夏天的一个星期天的早晨,万里晴空,骄阳似火.一只好看的小花猫肚子饿了,到野外找食吃.它来到小河边,看到河边的老槐树下拴着一条狗,黑黑的绒毛,四肢雪白,长长的尾巴往 ...
- java多态猫狗吃骨头_javaSE学习(6):面向对象:多态的两个经典案例(猫狗案例和南北方人案例)...
1.猫狗多态案例 /* 2019年5月19日9点48 @author 潇雷 猫狗案例多态版: */ class Animal{ public void eat(){ System.out.printl ...
- 猫喜欢吃鱼,可猫不会游泳
猫喜欢吃鱼,可猫不会游泳.鱼喜欢吃蚯蚓,可鱼又不能上岸.上天给了你许多诱惑,却不让你轻易得到.要想实现,就要自己奋斗.人生就像蒲公英,看似自由,却往往身不由己.生活没有如果,只有结果,自己尽力了,努力 ...
- 软件实习项目2——贪吃喵(猫吃鱼版贪吃蛇)(代码实现)
软件实习项目2--贪吃喵(猫吃鱼版贪吃蛇)(代码实现) 类变量的定义以及类的初始化__init__ 一.游戏的逻辑 1.猫头的生成 2.鱼的生成 3.猫头和鱼骨的移动 4.按下键盘,改变方向 二.主窗 ...
最新文章
- 10大经典排序算法,20+张图就搞定
- wxWidgets:在全局范围内捕捉关键事件
- Javascript中大括号“{}”的多义性
- php image 转 data uri 图片 (Image Data URIs with PHP)
- UIControl IOS控件编程
- java 去除html中img_JAVA去除HTML标签
- Docker+SVN
- [整理]Linux压缩与解压缩命令整理。
- ZOJ 1654 二分匹配基础题
- 用spss做哑变量(含spss安装教程)
- 如何自制圆环_PPT中如何制作环形图高级教程
- hadoop功能测试
- python爬虫中国土地市场网的相关数据最新2021/5/7
- PP视频(PPTV聚力)web接口分析
- 怎样用VR看分频视频?
- 生产订单的计划、实际成本与产出查看
- License server system does not support this version of this feature
- 用HTML5+CSS3实现qq会员页面的仿制
- BCD码、8421码、余三码、格雷码
- 高通骁龙855,麒麟980,A12,Exynos 9820芯片参数比较
热门文章
- 通信运营商客户流失预测
- 什么是挂载,Linux挂载详解
- yolov5 + second_classify -- 代码
- 黄智生教授:大数据时代的语义技术(公号回复“黄智生语义技术”下载彩标PDF论文)
- 场效应管微变等效电路的计算_微变等效电路如图.ppt
- Flink常见的面试题
- Swarm简介和使用教程-Docker-swarm和Docker-machine
- 如何选择指针中置空?NULL, nullptr, 0?
- PANOPLY:Low-TCB Linux Applications with SGX Enclaves笔记
- Linux安装围棋AI(q5go和katago)