汉诺塔问题的C语言实现
时间:2011-03-24 来源:涵曦
汉诺塔 - 解决思路 |
1.如果只有一个金片,则把该金片从源移动到目标棒,结束。
2.如果有n个金片,则把前n-1个金片移动到辅助的棒,然后把自己移动到目标棒,最后再把前n-1个移动到目标棒
//Tower of Hanoi 汉诺塔
#include <stdio.h>
void TOH(int n, char A, char B, char C)
{
if (n == 1)
{
printf("Movedisk %d from %c to %c \n",n,A,C);
return;
}
TOH(n-1, A, C, B);
printf("Movedisk %d from %c to %c \n",n,A,C);
TOH(n-1, B, A, C);
}
void main()
{
int m, n;
printf("请输入测试数据的次数");
scanf("%d", &m);
while (m != 0)
{
printf("请输入数字n以解决n阶汉诺塔问题:\n");
scanf("%d",&n);
TOH(n,'A','B','C');
m--;
if (m == 0)
{
return;
}
}
}
相关阅读 更多 +