闲言少叙,直接开始,题目就不多说了,大家都知道。

我们先看1个的情况

我们看2个的情况:

我们看3个的情况:

我们再来看4个的情况:

大家可以来找一找相似之处:

首先是移动次数,假设有N个圆盘,就需要移动2^N-1次,

 思路:我们先把所有的圆盘分成两个部分,第N个为一组,并将这一组命名为E,剩余的1~N-1为一组,并将这一组命名为F,这时候我们发现就和第二张动图的情况显示,只需要将F组移动到B柱,将E组移动到C柱,最后把F组移动到C柱,就完成了操作。然后我们的目标就是将这个F组给移动到B柱,那么我们运用递归的思想,再将第N-1个为E组,剩余的1~N-2为F组,就可以完成操作了。(这里提到的A,B,C柱就是上面动图的A,B,C柱)

操作:我们设置三个字母:X,Y,Z,X为出发点,Y为跳板,C为终点,参照第二张动图:

1.将F从A移动到B:

X---->Z---->Y

2.将E从A移动到C:

X---->Y---->Z

3.将F从B移动到C:

Y---->X---->Z

最后,我们把X看作A柱,Y看作B柱,Z看作C柱

上代码:

#include<iostream>
using namespace std;
void han(int a, char x, char y, char z) {if (a == 1) {cout << x << "->" << z << endl;//剩余1个的时候直接从开始的移动到结束的}else {han(a - 1, x, z, y);cout << x << "->" << z << endl;han(a - 1, y, x, z);}
}
int main() {int a;cin >> a;han(a, 'a', 'b', 'c');return 0;
}

本人语言表达能力不是很好,有不懂的可以私信,会及时回复,谢谢大家支持!

c++实现汉诺塔(图文并茂)相关推荐

  1. 个盘子的汉诺塔需要移动几步_坨——理解递归实现quot;汉诺塔quot;代码的关键...

    我记得,大学学C语言时,在函数递归调用那一节有个作业,就是写汉诺塔.不少同学遭遇到困难.在知乎上遇见的就有: 如何理解汉诺塔的递归?​www.zhihu.com 题主发出悲鸣:"--学C++ ...

  2. 汉诺塔(三)_栈的应用

    问题 E: 汉诺塔(三) 时间限制: 3 Sec  内存限制: 128 MB 提交: 2  解决: 2 [提交][状态][讨论版] 题目描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北 ...

  3. 汉诺塔怎么加计数次数c语言,C语言计算汉诺塔最小移动步数 (二)

    前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较繁琐的.所以又根据这个公式又写了一个. ...

  4. Ka的递归编程练习 Part4|Hanoi汉诺塔,双色汉诺塔的也有

    1 #include <stdio.h> 2 void hanoi(int s,char a,char b,char c) //a是出发盘,b是中途盘,c是结束盘 3 { 4 if(s== ...

  5. 技术图文:如何实现汉诺塔问题?

    背景 最近在辅导小孩们学习编程,在介绍函数递归时,最典型的就是汉诺塔问题了. 我在这里总结一下,以方便大家的学习. 汉诺塔问题源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在 ...

  6. 汉诺塔问题---小昝

    C语言 #include <stdio.h> void move(char A,char C){printf("%c ---> %c\n",A,C); }void ...

  7. 轻松理解汉诺塔问题(图解java描述)

    引言:(易于理解) 汉诺塔看似简单的几行代码,却蕴含着奇妙的算法.我从我个人学习的角度来说.我一开始理解了原理,但是编码不会编,这也就是所谓的眼高手低.多研究多在IDE(eclipse-java,VS ...

  8. 栈与队列5——汉诺塔问题(方案二)

    题目 汉诺塔问题的基础上,增加限制,必须得经过中间,不能直接从左到右或从右到左,求当塔有N层的时候打印最优移动过程和最优移动总步数 要求 法一:递归法 法二:非递归法,用栈来模拟 解析 法二:非递归法 ...

  9. 栈与队列5——汉诺塔问题

    题目 汉诺塔问题的基础上,增加限制,必须得经过中间,不能直接从左到右或从右到左,求当塔有N层的时候打印最优移动过程和最优移动总步数. 要求 法一:递归法 法二:非递归法,用栈来模拟 解析 法一:主要分 ...

  10. 【项目展示】自己用C语言编写的汉诺塔小游戏

    本文目录 1.前言 2.什么是汉诺塔? 3.项目规格 4.基本思路 5.源代码 6.运行结果 7.感想与心得 8.未来规划 1.前言 昨儿个把自己大一时候写过的五子棋重构了一下,之后就在想着要不把不知 ...

最新文章

  1. 谁说AI无用?疫情下,AI已经代替人类做了很多...
  2. ios mysql 修改数据,iOS数据库FMDB--增删改查(模糊查询)实写记录
  3. 保护8亿终端 阿里聚安全携手信通院打造B2C资金安全闭环
  4. python 生意参谋_GitHub - iOSDevLog/sycm: 生意参谋
  5. SpringMVC-自定义转换器
  6. Rendering: repaint, reflow/relayout, restyle的学习笔记
  7. 频域分析方法的理解(信号、频谱、能量谱、功率谱、倒频谱、小波分析)(终极教程)
  8. python获取一个月之前日期_利用python获取当前日期前后N天或N月日期的方法示例...
  9. (三)C语言之九条语句
  10. 服务器多路径 映射分区找不到,设备映射多路径DM-Multipath
  11. 国家计算机病毒中心发布违规 APP 和 SDK 名单
  12. C语言描述信息的结构体,(c语言)游戏中由人物各种信息组成的结构体
  13. python工资这么高为什么不学-为什么Python岗位薪资越来越高
  14. 11.2.0.3 MRP进程异常终止 ORA-00600 krr_assemble_cv_3
  15. 用报表工具Style Report制作排名前N名的分组报表
  16. win10电脑外接音响没声音怎么回事?win10电脑外接音响没声音的修复方法
  17. RRD原理(转载的)
  18. 亚马逊森林大火----- 我也来评论一下
  19. 被使用次数最多的22个Python外部模块
  20. 典型周期性电信号的测量

热门文章

  1. 使用chrome设置代理,果然还是linux 方便呢。想安装一个chrome的插件,通过命令设置代理。
  2. mysql是什么?mysql的特点
  3. hdu 杭电1429 胜利大逃亡(续)
  4. 2021/7/15 习题2-6 求阶乘序列前N项和
  5. AVFoundation(一)
  6. 2022-Arch安装(详细)
  7. IMPL10. formality 常用变量浅析
  8. 游戏运维的开始,这只是开始
  9. vscode上的git三部曲+git pull操作
  10. 赢在项目工具的落地-讲师团俊平老师主讲