C++:汉诺塔问题
来源:互联网 发布:知乎周刊第一本 编辑:程序博客网 时间:2024/05/16 15:09
/*软件名称:作者:宋琳浩版本:1.0*/#include<iostream>#include<conio.h>using namespace std;#define MAX 100typedef struct{ int elem[MAX]; int top;}SeqStack;SeqStack A;SeqStack B;SeqStack C;int sum;void show(){ int i; cout<<"A上的金片: "; for(i=0;i<A.top;i++) { cout<<A.elem[i]<<" "; } cout<<endl; cout<<"B上的金片: "; for(i=0;i<B.top;i++) { cout<<B.elem[i]<<" "; } cout<<endl; cout<<"C上的金片: "; for(i=0;i<C.top;i++) { cout<<C.elem[i]<<" "; } cout<<endl<<endl;}void Init(SeqStack &S){ S.top=0;}void move(int n,SeqStack &X,SeqStack &Z){ Z.top++; Z.elem[Z.top-1]=X.elem[X.top-1]; X.top--; return ;}void hanoi(int n,SeqStack &X,SeqStack &Y,SeqStack &Z){ if(n==1) { sum++; move(n,X,Z); cout<<"第"<<sum<<"次移动:"<<endl; show(); } else { hanoi(n-1,X,Z,Y); sum++; move(n,X,Z); cout<<"第"<<sum<<"次移动:"<<endl; show(); hanoi(n-1,Y,X,Z); }}int main (){ sum=0; Init(A); Init(B); Init(C); cout<<"请输入金片的数量(不超过100个)"<<endl; int a; cin>>a; A.top=a; for(int i=0;i<a;i++) { A.elem[i]=a-i; A.top=a; } cout<<"初始状态为下图,按任意键开始自动移动"<<endl; show(); getch(); hanoi(a,A,B,C); cout<<"移动完成!共用了"<<sum<<"步!"<<endl; cin>>a; return 0;}
阅读全文
0 0
- C++Practise12:汉诺塔问题
- c语言汉诺塔问题
- 算法:汉诺塔问题(c++)
- C++:汉诺塔问题
- c语言经典问题:汉诺塔 Hanoi问题
- c语言解决汉诺塔问题
- c语言 解决汉诺塔问题
- 汉诺塔问题(C实现)
- C++/python解决汉诺塔问题
- C问题
- c问题
- c问题
- c问题
- C问题
- C++/C 颜色问题
- C++/C const问题
- 问题 C: 背包问题
- C趣味编程之汉诺塔问题
- C语言-函数实现模块化设计-函数的递归调用
- react-native 打包遇到aapt错误解决方案
- 轻量级插件myFocus的使用
- Http请求的状态码说明
- java中如何输入char类型
- C++:汉诺塔问题
- 自学网络结构(二):Learning Transferable Architectures for Scalable Image Recognition
- Nvidia Jetson TX2 运行Faster RCNN物体检测demo
- TCP状态机
- hiho 175 周 贪心 (北美startup的面试题)
- 数据成员绑定
- C语言:角股定理
- 关于JS函数的一些基本理解
- HDU 6242/2017CCPC哈尔滨 Geometry Problem 【随机化+计算几何】