漢羅塔問題

2022-07-29 15:54:24 字數 1003 閱讀 3807

漢羅塔的移動序列為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 ...