漢羅塔的移動序列為2^n-1 次
///
/// 漢羅塔問題的遞迴解
///
///
///
///
///
///
////// 演算法目的: 把是start柱子上的木塊移動到end柱子上
///
/// 當start柱子上只有兩個圓環時,把兩個圓環放到end柱子上要借助middle柱子,
/// 這樣start柱子上有n個圓環時,要先把第n個圓環上的n-1各圓環移動到middle柱子上,
/// 然後再把第n個圓環移動到end柱子上,
/// 然後再把middle柱子上的n-1個圓環移動到end柱子上, 依次遞迴上去直到把start柱子只有1個圓環時移動該圓環到end柱子上,結束依次
/// 遞迴
///
///時間複雜度為o(2^n)
///
public static void move(string start, string middle, string end, int num)
move(start, end, middle, num - 1);
move(start, middle,end , 1);
move(middle, start, end, num -1);
// move(start, middle, end, num-2);
// move(start,middle,end,1);
// move(middle, start,end, num - 2);
"*************************");
"move " + start + " to " + middle);
"move " + start + " to " + end);
"move " + middle + " to " + end);
}
漢羅塔問題
1.漢諾塔問題描述 有3根柱子a,b,c,a柱上有n個盤子,盤子的大小不等,大的盤子在下,小的盤子在上。要求將a柱上的n個盤子移到c柱上,每次只能移動乙個盤子。在移動過程中,可以借助於任何一根柱子 a b c 但必須保證3根柱子上的盤子都是大的盤子在下,小的盤子在上。2.源程式 注 源程式中的x,y...
怎麼理解漢羅塔問題 教你輕鬆理解漢諾塔問題
漢諾塔的解決在程式裡實際上是乙個函式遞迴呼叫的過程。假設a上有 n個盤子,求解的大 致想法是想把 a最上面的 n 1個盤子借助c挪到 b,接著把 a最下面的最大的盤子挪到 c,再把b上的 n 1個盤子借助a挪到 c,完成。首先先看 c 裡解決這個問題的 using system using syst...
漢羅塔動畫實現
import turtle class stack def init self self.items def isempty self return len self.items 0 def push self,item def pop self return self.items.pop def ...