欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java簡單實(shí)現(xiàn)農(nóng)夫過河問題示例

 更新時間:2017年12月07日 11:04:30   作者:csu_yumi  
這篇文章主要介紹了Java簡單實(shí)現(xiàn)農(nóng)夫過河問題,簡單描述了農(nóng)夫過河問題的概念、原理并結(jié)合簡單實(shí)例形式分析了java解決農(nóng)夫過河問題的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Java簡單實(shí)現(xiàn)農(nóng)夫過河問題。分享給大家供大家參考,具體如下:

一、問題描述

老伯伯要帶魚、狗、貓過河到對岸.,有一條船,只能坐一個人,老伯每次只能帶一樣動物過河,當(dāng)老伯不在的時侯狗會咬貓,貓會吃魚.,請問怎么順序過河呢?

二、實(shí)現(xiàn)代碼

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("農(nóng)夫帶著 " + 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("農(nóng)夫從彼岸到此岸");
            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("農(nóng)夫帶著 " + 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("腳本之家測試結(jié)果:");
        System.out.println();
        new CrossRiver().thisTothat();
    }
}

運(yùn)行結(jié)果:

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • Java List轉(zhuǎn)換成String數(shù)組幾種實(shí)現(xiàn)方式詳解

    Java List轉(zhuǎn)換成String數(shù)組幾種實(shí)現(xiàn)方式詳解

    這篇文章主要介紹了Java List轉(zhuǎn)換成String數(shù)組幾種實(shí)現(xiàn)方式詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 使用maven插件對java工程進(jìn)行打包過程解析

    使用maven插件對java工程進(jìn)行打包過程解析

    這篇文章主要介紹了使用maven插件對java工程進(jìn)行打包過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Spring基于AspectJ的AOP開發(fā)案例解析

    Spring基于AspectJ的AOP開發(fā)案例解析

    這篇文章主要介紹了Spring的基于AspectJ的AOP開發(fā),AspectJ是一個基于Java語言的AOP框架,使用AspectJ需要導(dǎo)入Spring?AOP和AspectJ相關(guān)jar包,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 詳解Sentinel流量控制限流框架的原理與使用

    詳解Sentinel流量控制限流框架的原理與使用

    Sentinel 是一個高可用、高擴(kuò)展、高穩(wěn)定性的開源流量控制和熔斷降級框架,可以在分布式系統(tǒng)中實(shí)現(xiàn)實(shí)時的流量控制,下面就來和大家聊聊是具體如何操作的吧
    2023-05-05
  • WebSocket實(shí)現(xiàn)數(shù)據(jù)庫更新時前端頁面刷新

    WebSocket實(shí)現(xiàn)數(shù)據(jù)庫更新時前端頁面刷新

    這篇文章主要為大家詳細(xì)介紹了WebSocket實(shí)現(xiàn)數(shù)據(jù)庫更新時前端頁面刷新,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 關(guān)于properties配置文件的加密方式

    關(guān)于properties配置文件的加密方式

    這篇文章主要介紹了關(guān)于properties配置文件的加密方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • iOS多線程介紹

    iOS多線程介紹

    這篇文章主要介紹了iOS多線程的相關(guān)知識,涉及到對進(jìn)程,線程等方面的知識講解,本文非常具有參考價值,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • 關(guān)于springBoot yml文件的list讀取問題總結(jié)(親測)

    關(guān)于springBoot yml文件的list讀取問題總結(jié)(親測)

    這篇文章主要介紹了關(guān)于springBoot yml文件的list讀取問題總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • JavaWeb實(shí)現(xiàn)文件上傳與下載實(shí)例詳解

    JavaWeb實(shí)現(xiàn)文件上傳與下載實(shí)例詳解

    在Web應(yīng)用程序開發(fā)中,文件上傳與下載功能是非常常用的功能,下面通過本文給大家介紹JavaWeb實(shí)現(xiàn)文件上傳與下載實(shí)例詳解,對javaweb文件上傳下載相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2016-02-02
  • 一文掌握Spring中循環(huán)依賴與三級緩存

    一文掌握Spring中循環(huán)依賴與三級緩存

    這篇文章主要介紹了Spring中循環(huán)依賴與三級緩存,Spring通過三級緩存解決了循環(huán)依賴,其中一級緩存為單例池,二級緩存為早期曝光對象earlySingletonObjects,三級緩存為早期曝光對象工廠(singletonFactories),本文結(jié)合實(shí)例代碼介紹的非常詳細(xì),需要的朋友參考下吧
    2023-09-09

最新評論