Openjudge 1005:汉诺塔问题(Hanoi)
发布日期:2021-05-20 10:07:21
浏览次数:41
分类:技术文章
本文共 793 字,大约阅读时间需要 2 分钟。
汉诺塔问题
有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面。 提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。
问:如何移?最少要移动多少次?
思路: 递归解, 三根杆分别用src(左),mid(中),dest(右)代替。
- 先将n-1个盘子借助中介杆从src移动到mid
- 再将一个盘子借助中介杆从src移动到dest
- 最后将n-1个盘子借助中介杆从mid移动到dest
#includeusing namespace std;void Hanoi(int n, char src, char mid, char dest) { //将src上的n个盘子,以mid为中介,移动到dest上 if (n == 1) { //只需移动一个盘子 cout << n << ":" << src << "->" << dest << endl; //直接将盘子从src移动到dest即可 return; //递归终止 } Hanoi(n-1, src, dest, mid); //先将n-1个盘子从src移动到mid cout << n << ":" << src << "->" << dest<< endl; //再将一个盘子从src移动到dest Hanoi(n-1, mid, src, dest); //最后将n-1个盘子从mid移动到dest return; }int main() { int n; char a, b, c; cin >> n >> a >> b >>c; Hanoi(n, a, b, c); return 0;}
转载地址:https://blog.csdn.net/weixin_45417428/article/details/104520713 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年03月28日 18时03分07秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
python中pca算法_使用python的numpy库实现PCA算法
2019-04-21
statelesswidget 初始化执行方法_Spring的初始化回调你真的搞懂了吗?
2019-04-21
nhibernate和mysql_利用NHibernate与MySQL交互
2019-04-21
python22期_python22期第八天(正则表达式-模块,总结)
2019-04-21
mysql多字段存储过程_mysql 的存储过程_多字段
2019-04-21
python怎么创建字符串列表_如何在python列表中为每个字符串创建子列表?
2019-04-21
vba ado 执行多条mysql 语句_access 按钮 多条sql语句 VBA
2019-04-21
弹性方法计算连续梁板内力_(梁板结构)混凝土结构设计复习题及答案
2019-04-21
java最小化窗体_JAVA窗体最大化最小化控制+托盘
2019-04-21
java 注解 数组默认值_Java注解默认值
2019-04-21
java流程语句_Java流程控制语句
2019-04-21
java require_java正则中的requireEnd和hitEnd
2019-04-21
400错误java_java代码转化成c#代码 报400错误
2019-04-21
java常见对象_Java 常见对象 02
2019-04-21
spring java配置_Spring Java配置要点
2019-04-21