漢諾塔詳解
以4層為例
以下為我的拙見,還希望大佬雅正
要把漢諾塔移動到c 需要把1,2,3層移到b 把4移動到c 在吧123移動到b
但是一次只能動一塊 所以我們目前要做的就是把上面三塊移動到b
那就需要把1 2移動到c
由此我們可以推出要把1,2移動到c,只需要把1移動到b
這裡我們發現有很多重複的自相似動作
我們就可以設計遞迴 遞迴需要1,遞迴體 2 出口。
遞迴體移動n-1個盤子和1個盤子和n個盤子過程都是相似的
但是每次放入程式設計客棧的桿子不一樣。www.cppcns.com
出口n=1時只剩乙個盤子,直接移動到c即可
hanoi(n ,a , b , c)
n 移動數量
a 出發地
b 借助地
c 終點
這個函式的意思就是有n個盤子從a出發借助b來到c
現在有n層漢諾塔 就需要把上面n-1層移動到b
hanoi(n-1,a,c,b)
這個函式就是我們要把n-1個盤www.cppcns.com子從a借助c移動到b
move(a,c)現在不需要再借助了 可以直接從a移動到c
接下來我們就要借助a吧剩下n-1個盤子移動到c了
hanoi(n-1,b,a,c)即可完成
遞迴出口
n<=1
在這裡插入**片
```// 漢諾塔問題
//輸出移動的步驟
#include
//記錄步數
int i = 1;
//n 第幾號盤移動, from 移動塔 to 目標塔
void move(int n, char from, char to)
void hanoi(int n, char from, char mid, char to) //函式出口
else
}int main()
總結
簡單漢諾塔的C語言實現
對於漢諾塔問題,很多教材都以其為遞迴演算法的例題,這裡簡單說明一下漢諾塔問題的內容 漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並...
漢諾塔問題python詳解 《簡單分析》漢諾塔問題
漢諾塔是乙個非常著名的遊戲,遊戲中將會有三根棍子,第一根棍子上有n個從大到小疊起來的盤子,遊戲的目標是將這n個從大到小疊起來的盤子放到第三根棍子上。每一次只允許移動乙個,而且大的盤子永遠在小的盤子的下面。這也是非常著名的遞迴入門題。我們將通過呼叫三次遞迴函式來解決這個問題。暫時不考慮 只考慮解題。先...
SDUT ACM 漢諾塔(基於C語言)
time limit 1000 ms memory limit 65536 kib submit statistic problem description 漢諾塔 又稱河內塔 問題是印度的乙個古老的傳說。開天闢地的神勃拉瑪在乙個廟裡留下了三根金剛石的棒a b和c,a上面套著n個圓的金片,最大的乙個...