奔跑的东东
wq4113
全部博文(199)
2015年(101)
2014年(97)
2011年(1)
杀猪的杀
yinzhe19
镇水铁牛
Cwant
lilong_c
neverini
蓝色未央
wonder_1
_寒_CU
gumuzhiy
haokunsh
分类: C/C++
2014-10-18 16:46:59
汉诺塔,又称河内塔,是根据一个形成的一个问题:
有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:
提示:可将临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则。
问:如何移?最少要移动多少次?
【算法步骤】
(1)将A上n-1个盘借助C先移动到B上;
(2)再把A上剩下的一个盘移动到C上;
(3)将n-1个盘从B借助A移动到C上;
上一篇:【程序28】--五人岁数
下一篇:【程序29】--给一个不多于5位的正整数,求它是几位数,逆序打印出各位数字
wq41132014-10-21 22:59:58
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); } }
wq41132014-10-21 22:59:48
void move(char x,char y) { printf("%c->%c\n",x,y); }
wq41132014-10-21 22:59:39
void hanio() { void hanoi(int n,char one,char two,char three); int m; printf("Please input the number of diskes:"); scanf("%d",&m); printf("The step to move %d diskes:\n",m); hanoi(m,'A','B','C'); &nbs
登录 注册