汉诺塔程序求解...

[复制链接]
查看11 | 回复2 | 2010-12-4 00:34:47 | 显示全部楼层 |阅读模式
# include "stdio.h"
void mv(char x,char y)
{printf("%c-->%c\n",x,y);}
void h(int l,char x,char y,char z)
{if(l==1) mv(x,z);
else {h(l-1,x,z,y);
mv(x,z);
h(l-1,y,x,z);}}
void main()
{int n;
scanf("%d",&n);
h(n,'A','B','C');}
如果只有6个盘子,移动的过程和步骤是什么?
压堆栈和取堆栈的过程是怎样的?
如果可以的话,帮忙画个程序框图~~~

回复

使用道具 举报

千问 | 2010-12-4 00:34:47 | 显示全部楼层
这个汉诺塔我觉得可以算是谭浩强书上最难得一个例题了 我也花费了很长时间才理解的 我把我曾经写在书上的一些自己总结的东西写给你 不知道你能不能看得明白void move(char x,char y){ printf("%c-->%c\n",x,y);}一。void hanoi(int n,char one,char two,char three){ if(n==1)move(one,three); else{二。hanoi(n-1,one,three,two);三。move(one,three);四。hanoi(n-1,two,one,three); }}main(){ i
回复

使用道具 举报

千问 | 2010-12-4 00:34:47 | 显示全部楼层
//将盘子从A棒移到C棒#includeint main(){
void hanoi(int n,char a,char b,char c);
int n;
printf("输入盘子数:");
scanf("%d",&n);
hanoi(n,'A','B','C');
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行