2014-01-27 186 views
0

我想解決河內塔的變化。在這種情況下,我有兩個塔,高度相同,磁盤尺寸相同。只要尺寸相同或更小,我就可以將磁盤堆疊在一起。顏色不考慮堆疊功能。河內塔的變化(雙塔)

我有三個掛鉤和兩個塔,任務是交換兩個塔。

我最初的做法是建立一個色彩交替的塔,然後用一個不同的掛鉤向後移動。

我只是在想,這不是最優雅的解決方案。有一個更好的方法嗎?

更新:
我以爲我非常接近解決這個問題,但我沒有。我在紙上有所有的動作(對於n = 3),並且它看起來與原始算法非常相似,只是大量動作完成了兩次。不幸的是,我無法將它放入遞歸算法中。這很令人沮喪。有人有想法嗎?

+0

「三釘二塔」 - 就像在「初始兩個樹釘包含1-1塔」一樣? –

+0

是三個掛鉤中的兩個各包含一個塔。相同的高度,相同的磁盤尺寸只是不同的顏色(如一個綠色,一個紅色)。兩者都需要交換自己的位置。 – sebastian

回答

0

有一個網站,解決Tower of Hanoi的各種版本。另外,如果您想遞歸執行此操作,您實際上並不需要知道將會發生什麼。您可以遞歸地嘗試所有可用的移動,直到您到達解決方案。

+0

「你可以遞歸地嘗試所有可用的移動,直到你到達解決方案。」 - 你總是可以編寫一個蠻力算法,但是如果狀態空間很大,這不是明智的做法。 –

+0

我同意這一點。這只是一個說明,因爲遞歸是其中的一個標籤。 –

+0

是的。我知道那個網站,但它只是關於移動的數量。但我正在尋找一個好的算法來解決這個問題。 – sebastian