您好,登錄后才能下訂單哦!
小編給大家分享一下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如何實現農夫過河問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。