C++解决汉诺塔问题
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++解决汉诺塔问题相关推荐
- 用 python 解决汉诺塔问题并附带演示过程
用 python 解决汉诺塔问题并附带演示过程 参考文章: (1)用 python 解决汉诺塔问题并附带演示过程 (2)https://www.cnblogs.com/shinawear/p/1061 ...
- 2.2基本算法之递归和自调用函数_用栈算法递归解决汉诺塔问题
今天博主收一下线性表的尾,最近我们要学习的内容是栈和队列板块,栈和队列板块分为两讲,第一讲也就是今天我们主要学习栈的相关知识,包括栈的定义.栈的顺序表示及实现,栈的链式表示,栈的应用举例,以及栈递归实 ...
- c语言递归汉诺塔次数,c语言递归解决汉诺塔参数变化的疑惑
c语言递归解决汉诺塔参数变化的疑惑 答案:3 信息版本:手机版 解决时间 2020-04-05 14:20 已解决 2020-04-05 10:49 #include void main() {vo ...
- c语言递归解决汉诺塔问题
c语言递归解决汉诺塔问题 参考文章: (1)c语言递归解决汉诺塔问题 (2)https://www.cnblogs.com/didiaoxiaoguai/p/6686407.html 备忘一下.
- 数据结构之递归算法解决汉诺塔问题
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘 ...
- 汉罗塔用java怎么编程_编程:递归编程解决汉诺塔问题(用java实现)
//Li Cuiyun,October 14,2016. //用递归方法编程解决汉诺塔问题 package tutorial_3_5; import java.util.*; public class ...
- 简单算法解决汉诺塔问题
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序 ...
- 用函数递归的方法解决汉诺塔问题
函数递归算法的运用有一个经典例题,那就是汉诺塔问题,接下来就让我们一起来看看如何用函数递归来解决汉诺塔问题叭! 汉诺塔问题的起源: 汉诺塔(又称河内塔)问题是印度的一个古老的传说.开天辟地的神勃拉玛在 ...
- C++非递归解决汉诺塔问题
汉诺塔问题简述:将塔A上的n个大小不一的盘子借由塔B全部移动到塔C上,且在过程中不能将大盘子放在小盘子上. 目录 1.算法: 2.具体效果: 3.SeqStack.c ...
- ICS计算系统概论LC3汇编实验Lab5—中断、递归解决汉诺塔问题
Lab Purpose 完成用户程序的编写. 编写下面描述的键盘中断服务例程. condition: 用户程序: 汉诺塔的参数,记录为N,将用xFFFF初始化并存储在X3FFF内存中. 您的用户程序从 ...
最新文章
- PP-CRP-LVL 能力平衡
- response.sendredirect传递中文参数_Philips磁共振操作之参数 Contrast(3)
- C#:WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置
- len在python_len在python
- 【转】QT布局QGridLayout QHBoxLayout QVBoxLayout简要分析!!
- Android官方开发文档Training系列课程中文版:构建第一款安卓应用之创建用户界面
- C语言有符号和无符号数
- PHP项目汇报ppt模板,免费工作汇报模板(课堂PPT)
- 解决企业繁杂表单问题,还得看天翎表单引擎
- python爬取豆瓣电影250_利用Python爬取豆瓣TOP250的电影
- java 填数独_java – 数独求解方法
- Mac,Windows11,Windows10局域网互传共享文件
- 《数字图像处理》第三章学习总结感悟1:灰度变换与空间滤波概念及常用灰度变换方法介绍
- 3208点阵时钟c语言程序,点阵万年历(带时间、年月日星期调整及闹钟功能)C程序...
- Jav详细介绍的Mapper对应的Mybatis xml查询结果resultType返回值类型
- 卸载软件失败:“1628:完成基于脚本的安装失败”【已解决】
- ace 官网地址以及相关的下载地址--防止自己忘记
- WIN10教育版激活方法
- Django讲课笔记02:Django环境搭建
- 7_使用OGR模块操作矢量数据
热门文章
- java session时间_java session时长问题,java设置session超时时间实例
- NumberFormat类、BigInteger类和BigDecimal类-JAVA
- 深入浅出MySQL复制
- cnpm报错 : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本
- 配置PPPOE拨号和固定IP上网-从零开始学RouterOS系列02
- 大学物理第12章·气体动理论
- iOS13 已抛弃 3D touch,使用长按代替
- MAC OS 配置JDK环境变量
- Tomcat 8(一)Tomcat常用配置
- idea中添加查看jdk版本路径