Description

汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒A、B和C,A上面套着 nnn个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从A棒搬到C棒上,规定可利用中间的一根B棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。僧侣们搬得汗流满面,可惜当nnn 很大时这辈子恐怕就很搬了聪明的你还有计算机帮你完成,你能写一个程序帮助僧侣们完成这辈子的夙愿吗?

Input

第一行为一个正整数nnn

Output

若干行,表示将nnn个金片从A搬到C的全过程。
格式见样例。

Sample Input 1

2

Sample Output 1

Move disk 1 from A to B
Move disk 2 from A to C
Move disk 1 from B to C

Hint

n≤10n≤10n≤10

#include<iostream>//uncle-lu
using namespace std;
//汉诺塔问题是将问题化简为更简单的问题。当你需要从 A到B 挪n(n>=2)个的时候,
//你应该先把上面n-1个挪到C上,然后再把第n个挪到B上,再把C上的n-1个挪回B
//可以发现这是有边界的,当n==1时直接移动就可以了。所以我们直接找出一个挪n个的方法就可以了,然后处理好边界。void han(int n, char A, char B, char C){   //将n个圆盘通过B 从A移动到Cif (n == 1)  printf("Move disk %d from %c to %c\n", n, A, C); //将第n个圆盘直接从A移动到Celse{han(n - 1, A, C, B);//将n-1个圆盘通过C 从A移动到Bprintf("Move disk %d from %c to %c\n", n, A, C);  //将第n个圆盘直接从A移动到Chan(n - 1, B, A, C);//将n-1个圆盘通过A 从B移动到C}
}int main(){int n;cin>>n;han(n, 'A', 'B', 'C');system("pause");return 0;
}

刷题感悟

这个一个纯纯的递归调用,其实就是散步
将n-1个圆盘通过C 从A移动到B
将第n个圆盘直接从A移动到C
将n-1个圆盘通过A 从B移动到C
处理好n=1的边界问题就好了。

C++解决汉诺塔问题相关推荐

  1. 用 python 解决汉诺塔问题并附带演示过程

    用 python 解决汉诺塔问题并附带演示过程 参考文章: (1)用 python 解决汉诺塔问题并附带演示过程 (2)https://www.cnblogs.com/shinawear/p/1061 ...

  2. 2.2基本算法之递归和自调用函数_用栈算法递归解决汉诺塔问题

    今天博主收一下线性表的尾,最近我们要学习的内容是栈和队列板块,栈和队列板块分为两讲,第一讲也就是今天我们主要学习栈的相关知识,包括栈的定义.栈的顺序表示及实现,栈的链式表示,栈的应用举例,以及栈递归实 ...

  3. c语言递归汉诺塔次数,c语言递归解决汉诺塔参数变化的疑惑

    c语言递归解决汉诺塔参数变化的疑惑 答案:3  信息版本:手机版 解决时间 2020-04-05 14:20 已解决 2020-04-05 10:49 #include void main() {vo ...

  4. c语言递归解决汉诺塔问题

    c语言递归解决汉诺塔问题 参考文章: (1)c语言递归解决汉诺塔问题 (2)https://www.cnblogs.com/didiaoxiaoguai/p/6686407.html 备忘一下.

  5. 数据结构之递归算法解决汉诺塔问题

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

  6. 汉罗塔用java怎么编程_编程:递归编程解决汉诺塔问题(用java实现)

    //Li Cuiyun,October 14,2016. //用递归方法编程解决汉诺塔问题 package tutorial_3_5; import java.util.*; public class ...

  7. 简单算法解决汉诺塔问题

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

  8. 用函数递归的方法解决汉诺塔问题

    函数递归算法的运用有一个经典例题,那就是汉诺塔问题,接下来就让我们一起来看看如何用函数递归来解决汉诺塔问题叭! 汉诺塔问题的起源: 汉诺塔(又称河内塔)问题是印度的一个古老的传说.开天辟地的神勃拉玛在 ...

  9. C++非递归解决汉诺塔问题

    汉诺塔问题简述:将塔A上的n个大小不一的盘子借由塔B全部移动到塔C上,且在过程中不能将大盘子放在小盘子上.                  目录 1.算法: 2.具体效果: 3.SeqStack.c ...

  10. ICS计算系统概论LC3汇编实验Lab5—中断、递归解决汉诺塔问题

    Lab Purpose 完成用户程序的编写. 编写下面描述的键盘中断服务例程. condition: 用户程序: 汉诺塔的参数,记录为N,将用xFFFF初始化并存储在X3FFF内存中. 您的用户程序从 ...

最新文章

  1. PP-CRP-LVL 能力平衡
  2. response.sendredirect传递中文参数_Philips磁共振操作之参数 Contrast(3)
  3. C#:WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置
  4. len在python_len在python
  5. 【转】QT布局QGridLayout QHBoxLayout QVBoxLayout简要分析!!
  6. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之创建用户界面
  7. C语言有符号和无符号数
  8. PHP项目汇报ppt模板,免费工作汇报模板(课堂PPT)
  9. 解决企业繁杂表单问题,还得看天翎表单引擎
  10. python爬取豆瓣电影250_利用Python爬取豆瓣TOP250的电影
  11. java 填数独_java – 数独求解方法
  12. Mac,Windows11,Windows10局域网互传共享文件
  13. 《数字图像处理》第三章学习总结感悟1:灰度变换与空间滤波概念及常用灰度变换方法介绍
  14. 3208点阵时钟c语言程序,点阵万年历(带时间、年月日星期调整及闹钟功能)C程序...
  15. Jav详细介绍的Mapper对应的Mybatis xml查询结果resultType返回值类型
  16. 卸载软件失败:“1628:完成基于脚本的安装失败”【已解决】
  17. ace 官网地址以及相关的下载地址--防止自己忘记
  18. WIN10教育版激活方法
  19. Django讲课笔记02:Django环境搭建
  20. 7_使用OGR模块操作矢量数据

热门文章

  1. java session时间_java session时长问题,java设置session超时时间实例
  2. NumberFormat类、BigInteger类和BigDecimal类-JAVA
  3. 深入浅出MySQL复制
  4. cnpm报错 : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本
  5. 配置PPPOE拨号和固定IP上网-从零开始学RouterOS系列02
  6. 大学物理第12章·气体动理论
  7. iOS13 已抛弃 3D touch,使用长按代替
  8. MAC OS 配置JDK环境变量
  9. Tomcat 8(一)Tomcat常用配置
  10. idea中添加查看jdk版本路径