Java简单实现农夫过河问题示例
程序员文章站
2024-02-24 14:30:58
本文实例讲述了java简单实现农夫过河问题。分享给大家供大家参考,具体如下:
一、问题描述
老伯伯要带鱼、狗、猫过河到对岸.,有一条船,只能坐一个人,老伯每次只能带一样...
本文实例讲述了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>(); /*boolean thisflag = true; boolean thatflag = false; */ 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程序设计有所帮助。
下一篇: Android编程中黑名单的实现方法