汉诺塔的c++算法(towers of hanoi)
| 考试结束了整理了一下笔记, 发现这个比较有用, 于是做个存档。 汉诺塔也叫河内塔,是个比较简单的智力游戏。 | |

3个圆盘的汉诺塔的移动

4个圆盘的汉诺塔的移动
有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:
- 每次只能移动一个圆盘;
- 大盘不能叠在小盘上面。
提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则。
问:如何移?最少要移动多少次?
<br/>#include <iostream.h>//towers of hanoi<br/>using namespace std;<br/><br/>int main()<br/>{<br/> void towers(int n, char t1, char t2, char t3);<br/> int n;<br/> cout << "enter the number of disks:";<br/> cin >> n;<br/> towers(n, 'A', 'B', 'C');<br/>}<br/><br/>void towers(int n, char t1, char t2, char t3)<br/>{<br/> if(n < 1) cout << "no disks";<br/> else if(n == 1) cout <<"move top disk on tower " << t1 << " to tower " << t2 << endl;<br/> else<br/> {<br/> towers(n-1, t1, t3, t2);<br/> cout <<"move top disk on tower " << t1 << " to tower " << t2 << endl;<br/> towers(n-1, t3, t2, t1);<br/> }<br/> exit(0);<br/>}<br/>
Share on Facebook
main函数没有返回值,#include <iostream.h>应该是#include <iostream>[emot]01[/emot]
如果不写exit(0)的话, c语言程序默认的返回值是0,当然编译的时候会有警告 。 unix下基本都是写成iostream.h,现在写成什么不重要了. [emot]02[/emot]
[emot]01[/emot]复制下了,怎么没运行起了????
>bcc32 -v- -w -O1 cpp.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
cpp.cpp:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
>Exit code: 0
>cpp
enter the number of disks:3
move top disk on tower A to tower B
move top disk on tower A to tower C
move top disk on tower B to tower C
move top disk on tower A to tower B
move top disk on tower C to tower A
move top disk on tower C to tower B
move top disk on tower A to tower B
>Exit code: 0
我的运行结果