漢諾塔問題可以用遞迴和堆疊,也可以純迴圈實現(坑人的程設作業)
參考資料: (必看)
感謝資料作者。
#include#define num_of_pillar 3 //三根柱子
int* find(int (*a)[num_of_pillar],int *loc,int which,int num);//找到目標圓盤位置
void move(int* loc,int (*a)[num_of_pillar],int num,int judge);//移動圓盤
int main()
;//宣告存放盤子座標的陣列
int i;//給for用
int judge;
if(num%2==0)
else
for(row=0;row2)//防止陣列下標越界
for(i=0;i<2;i++)//當無法去後面兩根柱子時 放棄本次移動
if(a[nextrow][nextcol]>a[nowrow][nowcol])//可移動
switch(nowcol)
printf("%c %c\n",from,to);
return ;
}} if(a[num-1][nextcol]==0)//如果目標柱是空的直接移動
switch(nowcol)
printf("%c %c\n",from,to);
return ;
} }nextcol+=judge;//無法移到第一根目標柱 目光投向第二根
if(nextcol<0)
if(nextcol>2) }
}
漢諾塔c 實現
用c 實現了漢諾塔,使用了遞迴,使用了上一次實現的堆疊這個資料結構來實現的漢諾塔,下面是 stack.h main.cpp stackdemo created by xin wang on 4 15 15.include class outofbounds 刪除定義的陣列 bool isempty ...
C語言遞迴實現漢諾塔問題
剛剛學習漢諾塔問題想要快速上手的話也可以理解為由三個柱構成 具體到函式裡下面的注釋裡有寫。在使用遞迴前我們首先要知道什麼是遞迴 程式呼叫自身的程式設計技巧稱為遞迴 recursion 遞迴的作用 遞迴做為一種演算法在程式語言中廣泛應用。乙個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它...
C語言程式設計實現漢諾塔問題
1.首先解釋一下,漢諾塔問題 古代梵塔內有a b c3個座,開始時a座上面有64個盤子,盤子大小不等,大的在下,小的在上。乙個老和尚想把64個盤子從a移到c,規定移動過程中3個座上面始終保持大的在下,小的在上,且每次只能移動乙個盤子。程式設計實現輸出移動盤子的過程。2.解題思路 1 命令第2個和尚將...