时间:2021-05-20
本文实例讲述了Java简单实现农夫过河问题。分享给大家供大家参考,具体如下:
一、问题描述
老伯伯要带鱼、狗、猫过河到对岸.,有一条船,只能坐一个人,老伯每次只能带一样动物过河,当老伯不在的时侯狗会咬猫,猫会吃鱼.,请问怎么顺序过河呢?
二、实现代码
package demo;import java.util.ArrayList;import java.util.List;public class CrossRiver { List<String> listThis = new ArrayList<String>(); List<String> listThat = new ArrayList<String>(); public CrossRiver() { listThis.add("dog"); listThis.add("fish"); listThis.add("cat"); // listThis.add("people"); } public boolean isSafe(@SuppressWarnings("rawtypes") List list){ if(list.contains("fish")&&list.contains("cat")||list.contains("cat")&&list.contains("dog")){ return false; }else{ return true; } } public void thisTothat(){ String str = listThis.get(0); listThis.remove(str); if(this.isSafe(listThis)){ System.out.println("农夫带着 " + str + " 从此岸到彼岸"); System.out.println("此岸" + listThis + "\b" + "彼岸" + listThat); System.out.println(); listThat.add(str); thatToThis(); }else{ listThis.add(str); thisTothat(); } } public void thatToThis(){ if(listThis.isEmpty()){ System.out.println("此岸" + listThis + "\b" + "彼岸" + listThat); return; } if(isSafe(listThat)){ System.out.println("农夫从彼岸到此岸"); System.out.println("此岸" + listThis + "\b" + "彼岸" + listThat); System.out.println(); thisTothat(); }else{ String str = listThat.get(0); listThat.remove(0); if(isSafe(listThat)){ System.out.println("农夫带着 " + str + " 从彼岸到此岸"); System.out.println("此岸" + listThis + "\b" + "彼岸" + listThat); System.out.println(); listThis.add(str); thisTothat(); }else{ listThat.add(str); thatToThis(); } } } public static void main(String[] args){ System.out.println("测试结果:"); System.out.println(); new CrossRiver().thisTothat(); }}运行结果:
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C++基于人工智能搜索策略解决农夫过河问题。分享给大家供大家参考,具体如下:问题描述一农夫带着一头狼,一只羊和一个白菜过河,小船只能一次装载农夫和
本文实例讲述了基于C++的农夫过河问题算法设计与实现方法。分享给大家供大家参考,具体如下:问题描述:一个农夫带着—只狼、一只羊和—棵白菜,身处河的南岸。他要把这
题目描述:一个农夫带着一匹狼、一只羊、一颗白菜要过河,只有一条船而且农夫每次最多只能带一个动物或物品过河,并且当农夫不在的时候狼会吃羊,羊会吃白菜。,请设计程序
实现Java编程中倒计时的方法有许多,下面我们通过三个示例来简单了解下它的实现过程。1.简易方式实现/***@see*@authorAl_assadyuliny
本节引言:1.代码示例:运行效果图:实现代码:先是一个简单的布局:activity_main.xml:接着是我们的MainActiivty.java,同样很简单