本文实例讲述了Java简单实现农夫过河问题。分享给大家供大家参考,具体如下:
一、问题描述
老伯伯要带鱼、狗、猫过河到对岸.,有一条船,只能坐一个人,老伯每次只能带一样动物过河,当老伯不在的时侯狗会咬猫,猫会吃鱼.,请问怎么顺序过河呢?
二、实现代码
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( "农夫带着 " + 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程序设计有所帮助。