现在的位置: 首页 > 综合 > 正文

汉诺塔问题的C语言实现

2013年04月07日 ⁄ 综合 ⁄ 共 435字 ⁄ 字号 评论关闭

汉诺塔 - 解决思路

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;
}
}
}

抱歉!评论已关闭.