编程论坛
注册
登录
编程论坛
→
新人交流区
求解汉诺塔
feixue1039
发布于 2007-10-18 20:00, 843 次点击
才刚上三节选修课,老师就让编汉诺塔,晕死,去年上了一年C都美让我们干这个,急用,哪位高手帮帮忙?
10 回复
#2
blosaa
2007-10-18 20:06
汉诺塔是什么?你说清楚了,才能把程序做出来撒。
#3
dingpin
2007-10-18 20:16
是呀,汉诺塔是什么啊?
你主清楚要什么效果呀...
我们才有针对性的去做呀.....
#4
whfdbccn
2007-10-18 21:54
用递归做啊!
#5
xuesong
2007-10-18 21:57
提供一个三个的(用c++做的)
多个的自己改一下
#include<iostream.h>
void hanoi(int n,char a,char b,char c)
{
if(n>0)
{
hanoi(n-1,a,c,b);
cout<<a<<"->"<<c<<" ";
hanoi(n-1,b,a,c);
}
}
int main()
{
hanoi(9,'a','b','c');
return 0;
}
#6
xiaocunkele
2007-10-19 00:07
我晕,说得太不明白了吧!
#7
baby66
2007-10-19 15:32
LZ你google 或者baidu下
保证多得吓死你
#8
yoapple
2007-10-19 18:18
汉诺塔问题肯定要用递归嘛!
让我告诉大家:
//从initneedle移动n个盘子到endneedle,让tempneedle做中间储存
void hanoi(int n,const string&initneedle,const string&endneedle,const string&tempneedle)
{
//终止条件:只移动一个盘子
if(n==1)
cout<<"move"<<initneedle<<"to"<<endneedle<<eddl;
else {
//从initneedle到tempneedle移动n-1个盘子,用endneedle进行临时储存
hanoi(n-1,initneedle,tempneedle,endneedle);
//最大的盘子到endneedle
cout<<"move"<<initneedle<<"to"<<endneedle<<endl;
//从tempneedle到endneedle移动n-1个盘子,用initneedle进行临时储存
hanoi(n-1,tempneedle,endneedle,initneedle);
}
}
如果对递归理解不够,那末你将会很难理解这个算法.
#9
闲人勿进
2007-10-19 18:27
挺难做 的。
#10
zgqken
2007-10-19 18:51
这个数据结构那书里有详细解答
#11
neillopv
2007-10-19 18:54
C语言里面好象也有
1