算法介绍
其实算法非常简单,当盘子的个数为n时,移动的次数应等于2^n – 1(有兴趣的可以自己证明试试看)。后来一位美国学者发现一种出人意料的简单方法,只要轮流进行两步操作就可以了。首先把三根柱子按顺序排成品字型,把所有的圆盘按从大到小的顺序放在柱子A上,根据圆盘的数量确定柱子的排放顺序:若n为偶数,按顺时针方向依次摆放 A B C;
若n为奇数,按顺时针方向依次摆放 A C B。
⑴按顺时针方向把圆盘1从现在的柱子移动到下一根柱子,即当n为偶数时,若圆盘1在柱子A,则把它移动到B;若圆盘1在柱子B,则把它移动到C;若圆盘1在柱子C,则把它移动到A。
⑵接着,把另外两根柱子上可以移动的圆盘移动到新的柱子上。即把非空柱子上的圆盘移动到空柱子上,当两根柱子都非空时,移动较大的圆盘。这一步没有明确规定移动哪个圆盘,你可能以为会有多种可能性,其实不然,可实施的行动是唯一的。
⑶反复进行⑴⑵操作,最后就能按规定完成汉诺塔的移动。
所以结果非常简单,就是按照移动规则向一个方向移动金片:
如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C

#include <iostream>
#include<cstring>
#include <fstream>
using namespace std;
long time = 0;//全局变量//求次数
void Move(int n, char a, char b, char c) {//编号n的盘子从a到c++time;if (n == 1) {cout<<"move disk "<<n<<"from "<< a<<"-->"<<c<<endl;}else {Move(n - 1, a, c, b);//把A上的1到N-1号盘子从a到b,用c作为辅助cout<<"move disk "<<n<<"from "<< a<<"-->"<<c<<endl;Move(n - 1, b, a, c); // 把B上的1到N - 1号盘子从b到c,用a作为辅助}
}int main() {int m;cout << "input the number of the disk:" << endl;while (cin >> m){cout << "过程如下:" << endl;Move(m,'A','B','C');cout << "It needs " << time << " times"<<endl;cout << "input the number of the disk:" << endl;time = 0;}
}

#include <iostream>
#include<cstring>
#include <fstream>
using namespace std;
long time = 0;//全局变量//显示每次的操作
void move(char a, int n, char c) {//n号盘子cout << "第" << ++time << "次把" << n << "号盘子从" << a << "移动到" << c << endl;
}void hanobi(int n, char a, char b, char c) {if (n == 1) move(a, 1, c);else {hanobi(n - 1, a, c, b);//把A上的1到N-1号盘子从a到b,用c作为辅助move(a, n, c);hanobi(n - 1, b, a, c);// 把B上的1到N - 1号盘子从b到c,用a作为辅助}
}int main() {int m;cout << "input the number of the disk:" << endl;while (cin >> m){cout << "过程如下:" << endl;hanobi(m, 'A', 'B', 'C');cout << "It needs " << time << " times"<<endl;cout << "input the number of the disk:" << endl;time = 0;}
}

汉诺塔递归算法C++实现相关推荐

  1. 汉诺塔递归算法进阶_进阶python 1递归

    汉诺塔递归算法进阶 When something is specified in terms of itself, it is called recursion. The recursion give ...

  2. python汉诺塔_汉诺塔递归算法/搬金盘的婆罗门 - Python实现

    汉诺塔递归算法/搬金盘的婆罗门 - Python实现 版权声明 本文节选自作者本人的图书<Python编程基础及应用>,高等教育出版社.本文可以在互联网上自由转载,但必须:注明出处(作者: ...

  3. 汉诺塔递归算法/搬金盘的婆罗门 - Python实现

    汉诺塔递归算法/搬金盘的婆罗门 - Python实现 本文引用自作者编写的下述图书; 本文允许以个人学习.教学等目的引用.讲授或转载,但需要注明原作者"海洋饼干叔 叔":本文不允许 ...

  4. 汉诺塔-递归算法深入理解

    汉诺塔算法就3个步骤: 第一,把a上的n-1个盘通过c移动到b: 第二,把a上的最下面的盘移到c: 第三,因为n-1个盘全在b上了. 所以把b当做a重复以上步骤就好了.不过,思考过程还是很痛苦的,难以 ...

  5. python汉诺塔递归算法_Python文摘:汉诺塔问题与递归算法

    历史传说: 在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔.不论白天黑夜 ...

  6. python汉诺塔递归算法流程图,python实现汉诺塔递归算法经典案例

    Python汉诺塔递归问题 python请用递归算法编程解决汉诺塔问题 在线等 关于python递归函数实现汉诺塔 def move(n,a,b,c): #1 if n==1: #2 print(a, ...

  7. python汉诺塔递归算法流程图_python实现汉诺塔的图解递归算法

    一.起源: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小 ...

  8. python汉诺塔递归算法流程图_详解汉诺塔Python递归程序

    学习递归时,很多小伙伴对汉诺塔的递归算法非常疑惑,不清楚那么复杂的移动过程,为何用四五行代码就给解决了.汉诺塔问题:有三根柱子A,B,C.A柱上有若干碟子,每次移动一块碟子,小的只能叠在大的上面,把所 ...

  9. 对汉诺塔递归算法的理解(图解,附完整代码实现)

    前情提要: 首先说一下汉诺塔游戏的规则:如下图所示,有三个柱子A,B,C,我们要做的是把A柱的所有圆盘,全部转移到C柱上,转移时遵循的规则如下: 1.每次只能移动一个圆盘 2.所有的大圆盘必须在小圆盘 ...

  10. 汉诺塔 - 递归算法

    汉诺塔游戏规则描述: 有三根杆子star,station,end.star杆上有 N (>=1)个方块,方块尺寸由下(1)到上(n)依次变小.要求按下列规则将所有圆盘移至 end 杆: 每次只能 ...

最新文章

  1. Python3快速入门(三)——Python3标准数据类型
  2. Unix编程哲学和软件设计方法
  3. RocketMQ 源码分析 事务消息
  4. android旋转屏幕 简册,[Android][旋转屏幕]
  5. [EffectiveC++]item02:尽量以const,enum,inline代替#define
  6. SQL Server安装问题程序被挂起的错误解决办法
  7. 不固定宽度的div居中显示
  8. 计网实验1--配置路由
  9. 单服务器部署rancher_基于CentOS 7部署Rancher 2.0
  10. linux系统取代windows,Linux替代Windows系统软件大比拼
  11. MAC使用技巧之苹果电脑新手最容易犯的20个错误
  12. 目前常见的web网络安全漏洞
  13. 云原生爱好者周刊:mist.io 开源多云管理平台
  14. D. Masquerade strikes back(思维)
  15. linux 137错误,linux引导报错问题
  16. CVPR_2021_Fast-GANFIT: Generative Adversarial Networkfor High Fidelity 3D Face Reconstruction
  17. android官网被封掉了,只好用这个网站进谷歌了!嘎嘎
  18. 强哥的分享--如何使用Spring Boot做一个邮件系统
  19. linux删除一年前的文件,Shell脚本实现删除一年前文件功能分享
  20. 阿里云消息服务MNS-PHP+SDK

热门文章

  1. 计算机网络国家职业三级,计算机网络管理员国家职业标准
  2. ruby基础-安装和命令行
  3. win2008使用windows loader激活提示Unsupported partition table
  4. RetinaFace论文解读 --- RetinaFace: Single-stage Dense Face Localisation in the Wild
  5. pytorch下使用LSTM神经网络写诗
  6. XCode怎么搜索图片文件
  7. 小白速点,计算机的存储规则你知道多少
  8. 挖没写过的代码记录_holo_springboot
  9. android免费图标_20个免费和高质量的Android图标集—最佳
  10. html 栏目切换幻灯片效果,JS实现的幻灯片切换显示效果