汉诺塔问题(看完就记住)
汉诺塔问题:有三个柱子,初始柱a,辅助柱b和目标柱c;在初始柱上有着n个圆盘(圆盘放置规则,大的在下小的在上),对圆盘从上到下依次编号从1到n。将圆盘从初始柱a移到目标柱c上的问题就是汉诺塔问题。
解题思路:
(1)以c柱为中介,从a柱将1至n-1号盘移至b柱;
(2)将a柱中剩下的第n号盘移至c柱;
(3)以a柱为中介;从b柱将1至n-1号盘移至c柱。
下面是通过递归实现汉诺塔问题的c代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>void hanio(int n, char a, char b, char c)
{if (1 == n){printf("盘子%d:%c->%c\n", n, a, c);//只有一个盘子,直接从a—>c}else{hanio(n - 1, a, c, b);//将第n-1个盘子借助c柱把a柱的盘子移到b柱printf("盘子%d:%c->%c\n", n, a, c);hanio(n - 1, b, a, c);//将第n-1个盘子借助a柱把b柱的盘子移到c柱}
}int main()
{int n = 0;printf("输入盘子个数:");scanf("%d", &n);hanio(n, 'a', 'b', 'c');system("pause");return 0;
}
结果演示:
汉诺塔问题(看完就记住)相关推荐
- python 汉诺塔编程看不懂,简单理解汉诺塔递归问题(Python)
废话不多说,先上代码: def Hanoi(n, a, b, c): if n == 1: print(a, '-->', c) else: Hanoi(n-1, a, c, b) Hanoi( ...
- 汉诺塔递归 C语言 代码简洁
#include<stdio.h> void hannuota(int n,char A,char B,char C) {if(1==n) printf("将编号为%d的盘子从% ...
- 不会吧,不会吧,全网最细汉诺塔讲解,不会有人不知道吧。面试官直呼内行,看完只想默默找水喝(C语言)
最干hanoi,看完直呼口干舌燥 Hanoi(汉诺塔问题) 一.什么是汉诺塔 二.分析 1.移动过程 2.应用思想+函数雏形 3.部分代码 三.总代码 四.递归调用 OVER Hanoi(汉诺塔问题) ...
- 汉诺塔的递归实现,看完就懂了
对于要实现汉诺塔递归程序的同学,我相信有一部分同学还没有真正的玩过汉诺塔这个游戏,我建议先在手机应用商店下载一个汉诺塔游戏去感受一下,当了解了游戏的玩法之后,也更方便你去理解递归代码的逻辑. 下面通过 ...
- 个盘子的汉诺塔需要移动几步_看漫画学C++039:递归解汉诺塔
点击蓝字 关注我们 本话内容 请输入 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号A.B.C),在A杆自下而上.由大到小按顺序放置64个金盘(如 ...
- 汉诺塔递归与非递归算法
问题描述: 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这 ...
- 从汉诺塔讲递归的思考方式
想象你来到某个热带丛林,意外发现了十层之高的汉诺塔.正当你苦苦思索如何搬动它时,林中出来一个土著,毛遂自荐要帮你搬塔.他名叫二傻,戴着一个草帽,草帽上有一个2字,号称会把一到二号盘搬到任意柱. 你灵机 ...
- python汉诺塔游戏_Python实战:搭建汉诺塔小游戏,快和小伙伴一起玩玩吧
汉诺塔游戏:看谁能在短时间内将排好顺序的圈,按同样的顺放在另一根柱子上,每次只能动一个. 今天用python搭建汉诺塔小游戏(简约版) 代码亲测有效!源代码如下: #左中右塔用一个列表存储 left ...
- 杭电 汉诺塔问题总结
看了一下杭电的各种汉诺塔问题,遇到些奇奇葩葩的小问题,也有很多很好的思想,比如最后一题,来来回回的颠倒很有意思.总结一下: Pro.ID 1207 :http://acm.hdu.edu.cn/sho ...
- 时隔七个月,我终于弄懂了汉诺塔的思想
目录 1.问题描述 2.汉诺塔的分析 3.博主的反思 4.代码详解 博主在大一的上学期开学没多久看的汉诺塔,在看的过程中,很多地方似懂非懂,但是博主当时没有细品,便匆匆跳过,直到最近感觉自己递归学的不 ...
最新文章
- 16 条 yyds 的代码规范
- Ubuntu 安装 opencv-nonfree
- bootstrap 模态框垂直居中实现方法
- [Python人工智能] 十.Tensorflow+Opencv实现CNN自定义图像分类案例及与机器学习KNN图像分类算法对比
- [IE 技巧] 显示/隐藏IE 的菜单/工具栏
- 大数据资产管理在腾讯游戏的实践
- Git入门教程(1)
- 8张图带你轻松温习Java知识
- 跨程序提供及获取内容
- 吴恩达神经网络和深度学习-学习笔记-2-激活函数
- java 网络字节序转主机字节序_C语言高级编程——网络编程技术
- (转)中国首单运用区块链技术的交易所ABS获批
- Quartus II 12.1安装及破解
- 魔兽争霸3冰封王座添加自定义地图
- 仓库管理软件中的账套是什么意思
- 计算机无限开机,电脑开机无限循环重启
- 锐龙R3 4300U怎么样 相当于什么水平
- Vant IndexBar 在小程序中的简单使用
- QtCreator添加文件夹
- PDPS15.0机器人汽车件焊接 喷涂 人机仿真视频教程
热门文章
- PM Interview 60quiz
- Office Word 2010 2013 插入复选框 方框打勾 对号
- java生成word 框勾_Java根据word模板生成word文档之设计详细思路—word标签定义 | 学步园...
- 【摄影测量】利用经度L、纬度B、大地高h及heading pitch roll飞行姿态角将IMU惯导坐标系转换到WGS84坐标系
- 大地主题的解算 matlab,大地主题解算.PPT
- 台达内部速度指令_台达PLC连续脉冲输出如何控制速度
- ipad4越狱显示服务器维修,iPad越狱后怎么恢复出厂设置及恢复中所出现问题的解决方法...
- 【Redis】2. 入门篇
- Arcgis实现nc数据区域裁剪并输出nc文件
- 滴滴入局同城货运,一场闪电战,还是持久战?