/*
*目前應該改名叫"重頭打基礎-資料結構"了XDD
*/
問題:
有三個圓柱A、B、C
其中A圓柱上有3個圓片
圓片大小都不一,小的要放在大的上面
請把三個圓片從A移到另一個圓柱上
概念:
用遞迴~
解法:
當有1個圓片:
A->C (把圓片直接移動到另一個圓柱)
當有2個圓片:
A->B(先把上面圓片移動到B)
A->C(把最下面圓片移動到C)
B->C(把剛剛移動到B的圓片移到C)
當有n個圓片:
把n-1個圓片由A移動到B
把最底下的圓片由A移動到C
把n-1個圓片由B移動到C
時間複雜度:
有n片移動次數為2^n-1
程式碼:
void move(int a,char x,char y,char z){//將n個盤子從x藉由y移到z
if(1 == a)
printf("move %c -> %c",x,z);
else{
move(a-1,x,z,y);
move(1,x,y,z);
move(a-1,y,x,z);
}
}