农夫过河算法java,Java简单实现农夫过河问题示例

本文实例讲述了java简单实现农夫过河问题。分享给大家供大家参考,具体如下:

一、问题描述

老伯伯要带鱼、狗、猫过河到对岸.,有一条船,只能坐一个人,老伯每次只能带一样动物过河,当老伯不在的时侯狗会咬猫,猫会吃鱼.,请问怎么顺序过河呢?

二、实现代码

package demo;

import java.util.arraylist;

import java.util.list;

public class crossriver {

list listthis = new arraylist();

list listthat = new arraylist();

/*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();

}

}

运行结果:

45e7d4562b6de8b15fea94090d068666.png

希望本文所述对大家java程序设计有所帮助。

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值