漢諾塔(又稱河內塔)問題是源于印度一個古老傳說的益智玩具。大梵天創(chuàng)造世界的時候做了三根柱子屠尊,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上耕拷。并且規(guī)定讼昆,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤骚烧。
1.
將n-1個盤子從a借助c移動到b上
2
將n-1個盤子從b借助a移動到c上
#include <stdio.h>
#include <windows.h>
void Hanoi(int n, char a,char b,char c);
void Move(int n, char a, char b);
int count;
int main()
{
int n=8;
printf("請輸入漢諾塔的層數:\n");
scanf(" %d",&n);
Hanoi(n, 'A', 'B', 'C');
sleep(20000);
return 0;
}
// 將n個盤子從a 借助b 移動到c上
void Hanoi(int n, char a, char b, char c)
{
if (n == 1)
{
Move(n, a, c);
}
else
{
Hanoi(n - 1, a, c, b);//將n-1個盤子從a 借助c移動到b上
Move(n, a, c);
Hanoi(n - 1, b, a, c);//將n-1個盤子從b 借助a移動到c上
}
}
void Move(int n, char a, char b)
{
count++;
printf("第%d次移動 Move %d: Move from %c to %c !\n",count,n,a,b);
}
解決思路小甲魚視頻