源代码:
#include
void movedisc(unsigned n,char fromneedle,char toneedle,char usingneedle);
int i=0;
int main()
{
unsigned n;
printf("please enter the number of locomotive:");
scanf("%d",&n); //输入N值
printf("needle: a b c
");
movedisc(n,'a','c','b'); //从A上借助B将N个盘子移动到C上
//*********************************************************************
//在此处加入如下代码将C上的N个盘子再移回A 去掉此处代码即汉诺塔问题源代码
for(int j=1;j0)
{
//从fromneedle上借助toneedle将N-1个盘子移动到usingneedle上
movedisc(n-1,fromneedle,usingneedle,toneedle);
i;
//将fromneedle 上的一个盘子移到toneedle上
switch(fromneedle)
{
case 'a':
switch(toneedle)
{
case 'b':
printf("[%d]:------>-
",i,n,n);
break;
case 'c':
printf("[%d]:-------------->-
",i,n,n);
break;
}
break;
case 'b':
switch(toneedle)
{
case 'a':
printf("[%d]:--
",i,n,n);
break;
}
break;
case 'c':
switch(toneedle)
{
case 'a':
printf("[%d]:-break;
case 'b':
printf("[%d]:-break;
}
break;
}
//从usingneedle上借助fromneedle将N-1个盘子移动到toneedle上
movedisc(n-1,usingneedle,toneedle,fromneedle);
}
}。
全部