三個盤子為a,b,c,其中c是中介盤,我們要遵守移動規則將a上的盤子要全部通過b移動到c。
#include#includeusing namespace std;
#define maxsize 50
typedef struct
elemtype; //順序棧中元素型別
typedef struct
stacktype; //順序棧的型別
void initstack(stacktype *&s)//初始化
void destorystack(stacktype *&s)//銷毀棧
bool stackempty(stacktype *s)//判斷棧是否為空
bool push(stacktype *&s,elemtype e)//進棧
bool pop(stacktype *&s,elemtype &e)//出棧
void hanoil(int n,char x,char y,char z)//遞迴方法
漢諾塔遞迴方法
hannuota int n,char x,char y,char z x柱子是要移動的柱子,y柱子是x移動要借助的柱子,z柱子是要放在這個柱子上 在 hannuota函式中的遞迴判斷方法 如果是1個盤子 直接將a柱子上的盤子從a移到c 否則先將a柱子上的n 1個盤子借助c移到b 直接將a柱子上的盤...
遞迴和非遞迴實現漢諾塔問題
漢諾塔 又稱河內塔 問題其實是印度的乙個古老的傳說。開天闢地的神勃拉瑪 和中國的盤古差不多的神吧 在乙個廟裡留下了三根金剛石的棒,第一根上面套著64個圓的金片,最大的乙個在底下,其餘乙個比一 個小,依次疊上去,廟裡的眾僧不倦地把它們乙個個地從這根棒搬到另一根棒上,規定可利用中間的一根棒作為幫助,但每...
漢諾塔的遞迴和非遞迴實現
漢諾塔的遞迴和非遞迴實現 借助堆疊以非遞迴 迴圈 方式求解漢諾塔的問題 n,a,b,c 即將n個盤子從起始柱 標記為 a 通過借助柱 標記為 b 移動到目標柱 標記為 c 並保證每個移動符合漢諾塔問題的要求。輸入為乙個正整數n,即起始柱上的盤數。每個操作 移動 佔一行,按柱1 柱2的格式輸出。3a ...