本文實(shí)例講述了Java簡(jiǎn)單實(shí)現(xiàn)農(nóng)夫過河問題。分享給大家供大家參考,具體如下:
一、問題描述
老伯伯要帶魚、狗、貓過河到對(duì)岸.,有一條船,只能坐一個(gè)人,老伯每次只能帶一樣動(dòng)物過河,當(dāng)老伯不在的時(shí)侯狗會(huì)咬貓,貓會(huì)吃魚.,請(qǐng)問怎么順序過河呢?
二、實(shí)現(xiàn)代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
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( "服務(wù)器之家測(cè)試結(jié)果:" ); System.out.println(); new CrossRiver().thisTothat(); } } |
運(yùn)行結(jié)果:
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。