3】Hanoi汉诺塔问题
2016-05-17 11:16
246 查看
有N个圆盘,依半径大小(半径都不同),自下而上套在A柱上,每次只允许移动最上面一个盘子到另外的柱子上去(除A柱外,还有B柱和C柱,开始时这两个柱子上无盘子),但绝不允许发生柱子上出现大盘子在上,小盘子在下的情况,现要求设计将A柱子上N个盘子搬移到C柱去的方法。
①如果N=0,则退出,即结束程序;否则继续往下执行;
②用C柱作为协助过渡,将A柱上的(N-1)片移到B柱上,调用过程mov(n-1, a,b,c);
③将A柱上剩下的一片直接移到C柱上;
④用A柱作为协助过渡,将B柱上的(N-1)移到C柱上,调用过程mov (n-1,b,c,a)。
【参考程序】
#include<iostream> using namespace std; int k=0,n; void mov(int n,char a,char c,char b) //用b柱作为协助过渡,将a柱上的(n)移到c柱上 { if (n==0) return; //如果n=0,则退出,即结束程序 mov(n-1,a,b,c ); //用c柱作为协助过渡,将a柱上的(n-1)片移到b柱上 k++; cout <<k<<" :from "<<a <<"-->"<<c<<endl; mov(n-1,b,c,a ); //用a柱作为协助过渡,将b柱上的(n-1)移到c柱上 }
相关文章推荐
- java引用webRoot下的文件
- 无奈
- [Delphi] Webbroker ISAPI 示例说明
- La2678
- zookeeper集群搭建
- 无重边无向连通图的割点和桥
- Linux 下 Mysql 5.7 的安装
- 实现Android应用自动检查更新并且下载
- web程序定时器
- 使用MyBatis搭建一个访问mysql数据库的简单示例
- hashset原理
- java垃圾回收机制
- uva 11549
- 【js学习1】JavaScript实现&JavaScript插入
- C++中类型转换—static_cast,dynamic_cast,const_cast
- springmvc_hibernate的pom文件
- Linux系统编程学习笔记-open函数
- 用GDB调试程序(二)
- HDOJ1753 大浮点数相加
- [HDFS]HDFS的运行原理