汉诺塔
下面的定义摘自维基百科:
有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:
1.每次只能移动一个圆盘;
2.大盘不能叠在小盘上面。
如图所示
采用递归的方式演示该步骤。
源代码:
#include <stdio.h>
#include <windows.h>
#pragma warning (disable:4996)
void hanoi(int n, char one, char two, char three);
void move(char x, char y);
int main()
{
int n;
printf("请输入盘子数:");
scanf("%d", &n);
printf("步骤为:\n");
hanoi(n, 'A', 'B', 'C');
system("pause");
return 0;
}
void hanoi(int n, char one, char two, char three)
{
if (n == 1)
{
move(one, three);
}
else
{
hanoi((n - 1), one, three, two);
move(one, three);
hanoi((n - 1), two, one, three);
}
}
void move(char x, char y)
{
printf("%c ----> %c\n", x, y);
}