有三根柱子A,B,C,A柱子上有N个盘子,从小到大依次叠放,要求把A上的盘子都移到C上,B可以作为临时存放,移动的时候必须始终遵循小盘子在大盘子上面,且 每次只能移动一个盘子,求其算法。用java实现如下:
% Y" A2 \# P5 H9 a1 E+ `- h3 [ public class move{
- f5 l2 }0 z, E public static void main(String [] args){
! l+ M3 H. O/ ^6 e move(4,'a','c','b');6 c% }$ r" q7 m- p9 s/ [- I
}( n0 {3 _. E6 f% y1 _1 N5 D
//参数n表示移动count个盘子,src表示本来放盘子的,mid是临时存放盘子的,trag是最终目的
! h9 G! }5 ^+ ?* J public static void move(int count,char src,char trag,char mid){9 U& _; h2 E6 P3 H$ x; j
if(count==1){2 Y7 ]- v, c) U* p* d
System.out.println(src+"--------->"+trag);
' T9 X, |! |' K- @: `% L! ~ }else{+ o9 r$ i: u3 [6 b1 V) C& M
move(count-1,src,mid,trag);' D9 |, `2 o' N' \; q' P L) r
System.out.println(src+"--------->"+trag);2 C! a) t7 ]/ _/ u8 x# t
move(count-1,mid,trag,src);3 M) f/ ~/ o. s' o$ M: u& c9 u
}, }4 ]; L1 n; j. D
}2 H, j2 n2 ~7 F' \7 V+ D' O
} |