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程序设计有所帮助。

以上是 Java简单实现农夫过河问题示例 的全部内容, 来源链接: utcz.com/z/313562.html

回到顶部