初试——Hanoi塔问题
2011-10-03 22:21
190 查看
初试——Hanoi塔问题,这次写完之后,感觉还不没有那么的理解递归和Hanoi塔的思想…在慢慢品味一下吧
这次还是用类去写了,不过觉得不用类的,有点多余,既然写好了就发上来吧…
还是和以前一样,话不多说了,上代码。
先是.h文件:
然后是.cpp文件:
最后是main()函数:
是不是应该把整个对Hanoi操作都放入类当中,包括数据输入和输出?
不太清楚,有没人请指教!
这次还是用类去写了,不过觉得不用类的,有点多余,既然写好了就发上来吧…
还是和以前一样,话不多说了,上代码。
先是.h文件:
#include <iostream> #include <stack> using namespace std; class Hanoi { private: public: explicit Hanoi(); void hanoi(int ,stack<int> &,stack<int> &,stack<int> &); //hnoi塔的递归函数 void move(stack<int> &hx,const int &n,stack<int> &hz); //移动塔中的圆盘 };
然后是.cpp文件:
#include "Hanoi.h" Hanoi::Hanoi() { } void Hanoi::move(stack<int> &hx,const int &n,stack<int> &hz) { hz.push(hx.top()); //将X的栈顶元素放入Z hx.pop(); } void Hanoi::hanoi(int n,stack<int> &hx,stack<int> &hy,stack<int> &hz) { //hnoi塔的递归函数,各塔均以引用传入函数 if(1==n) { move(hx,n,hz); } else { hanoi(n-1,hx,hz,hy); move(hx,n,hz); hanoi(n-1,hy,hx,hz); } }
最后是main()函数:
#include "Hanoi.h" void main() { int t,n=3; //n为圆盘个数,t是临时参数,记录n的值 stack<int> x,y,z; //三座塔,x是塔源,y是辅助塔,z是目标塔 Hanoi h; t=n; while(n) { //各元素入栈 x.push(n--); } n=t; h.hanoi(n,x,y,z); while(!z.empty()) { cout<<z.top()<<' '; z.pop(); } }
是不是应该把整个对Hanoi操作都放入类当中,包括数据输入和输出?
不太清楚,有没人请指教!
相关文章推荐
- Hanoi塔问题
- Hanoi塔问题
- <Netty>(十九)(高级篇)自定义编解码的初试(有拆包粘包的问题)
- 算法分析——Hanoi塔问题
- 递归---Hanoi塔问题
- Hanoi塔问题 栈与递归C语言编程实现
- 腾讯2016春季校园实习招聘技术岗初试(一面)问题汇总(CC++后台)
- Hanoi塔问题(递归解决)
- 《数据结构(严蔚敏版)》学习笔记(四)——Hanoi塔问题
- Hanoi塔问题
- Hanoi塔问题
- 递归实现hanoi塔问题算法
- Hanoi塔问题
- 数据结构:栈与递归(Hanoi塔问题)
- Hanoi塔问题~~~答案竟然是二叉树的中序遍历
- Linux下的QQ客户端EVA初试以及ibus输入法问题的解决方法
- 菜鸡记录之初试自动更新,源码及出现的问题
- Laravel5.4初试-php artisan migrate问题
- DWR !初试碰到的弱智问题
- 算法分析——Hanoi塔问题