漢諾塔遞迴方法和非遞迴方法

2021-08-11 04:19:38 字數 533 閱讀 1507

三個盤子為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 ...