您的位置:首页 > 其它

Hanoi塔问题(C)

2007-03-02 11:43 288 查看
#include<stdio.h>
void move(unsigned n,char fromd,char tod,char us);
int i=0;
int main()
{
unsigned n;
int j;
printf("请输入盘子数:");
scanf("%d",&n);
printf(" 位置 : a b c ");
move(n,'a','c','b');
printf(" 共计: %d ",i);
scanf("%d",&n);
return 0;
}
void move(unsigned n,char fromd,char tod,char us)
{
if(n>0)
{
move(n-1,fromd,us,tod);
++i;
switch(fromd)
{
case 'a':
switch(tod)
{
case 'b':
printf(" 第[%d]步: %2d----->%2d ",i,n,n);
break;
case 'c':
printf(" 第[%d]步: %2d------------->%2d ",i,n,n);
break;
}
break;
case 'b':
switch(tod)
{
case 'a':
printf(" 第[%d]步: %2d<-----%2d ",i,n,n);
break;
case 'c':
printf(" 第[%d]步: %2d----->%2d ",i,n,n);
break;
}
break;
case 'c':
switch(tod)
{
case 'a':
printf(" 第[%d]步: %2d<-------------%2d ",i,n,n);
break;
case 'b':
printf(" 第[%d]步: %2d<-----%2d ",i,n,n);
break;
}
break;
}
move(n-1,us,tod,fromd);
}
}
/*
编写一个递归程序,解决Hanoi塔问题。要求盘数通过键盘输入控制,打印移动各盘的顺序。*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: