C語言實現漢諾塔算法

jopen 9年前發布 | 951 次閱讀 C/C++

漢諾塔:漢諾塔(又稱河內塔)問題是源于印度一個古老傳說的益智玩具。
大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照
大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小
順序重新擺放在另一根柱子上。并且規定,在小圓盤上不能放大圓盤,在
三根柱子之間一次只能移動一個圓盤。

#include<stdio.h>

include<iostream>

using namespace std;

int m=0;//定義全局變量m用于計數move void move (char A,int n,char C) { m++; printf("step%d:Move%d,From %c To %c\n",m,n,A,C);

}

void Hanoi(int n,char A,char B,char C) { if(n==1) move(A,1,C); //將編號為1的圓盤從A移動到C else { Hanoi(n-1,A,C,B);//將A上編號為1至n-1的圓盤移到B,C做輔助塔座 move(A,n,C); //將編號為N的圓盤從A移動到C Hanoi(n-1,B,A,C);//將B編號為1至n-1的圓盤移到C,A做輔助塔座 } }

int main(void) { int n; printf("請輸入需要移動的盤子數:"); while(scanf("%d",&n)!=EOF) Hanoi(n,'A','B','C'); return 0; }</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!