本文實例講述了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程序設計有所幫助。