C語言實現漢諾塔


漢諾塔

要把A柱子上的盤子移動到C柱子上,在移動過程中可以借助B柱子,但是要求小的盤子在上大的盤子在下。

 

解題思路:

1、把A柱子上的前N-1個盤子借助C柱子,全部移動到B柱子上(過程暫不考慮),再把第N個盤子由A柱子移動到C柱子上。

那么剩下要移動的盤子在B柱子上了。

2.把B柱子上的前N-2個盤子借助C柱子,全部移動到A柱子上(過程暫不考慮),再把第N-1個盤子由B柱子移動到C柱子上。

 

重復上面的兩個步驟即可把A柱子上的盤子全部移動到C柱子上。

 

 

 算法實現:

#include <stdio.h>

int num=0;//統計移動次數3
void hanio(int n,char a,char b,char c){    //n是盤的個數 A,B,C為三個放盤的塔
        if(n==1){
            num++;                                // 移動一次加一次
            printf("第%d次 %c-->%c\n",num,a,c);    //打印A移動到C
        }else{
            hanio(n-1,a,c,b);                    //n-1次 A通過C移動到B
            num++;                                // 移動一次加一次
            printf("第%d次 %c-->%c\n",num,a,c);  //打印A移動到C
            hanio(n-1,b,a,c);                    //n-1次 B通過A移動到C
        }
    }
int main() {
    int n=3;
    hanio(n,'A','B','C');
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM