汉诺塔问题的C语言实现

汉诺塔 - 解决思路

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 ;
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值