汉诺塔问题:有三个柱子,初始柱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;
}

结果演示:

 

汉诺塔问题(看完就记住)相关推荐

  1. python 汉诺塔编程看不懂,简单理解汉诺塔递归问题(Python)

    废话不多说,先上代码: def Hanoi(n, a, b, c): if n == 1: print(a, '-->', c) else: Hanoi(n-1, a, c, b) Hanoi( ...

  2. 汉诺塔递归 C语言 代码简洁

    #include<stdio.h> void hannuota(int n,char A,char B,char C) {if(1==n) printf("将编号为%d的盘子从% ...

  3. 不会吧,不会吧,全网最细汉诺塔讲解,不会有人不知道吧。面试官直呼内行,看完只想默默找水喝(C语言)

    最干hanoi,看完直呼口干舌燥 Hanoi(汉诺塔问题) 一.什么是汉诺塔 二.分析 1.移动过程 2.应用思想+函数雏形 3.部分代码 三.总代码 四.递归调用 OVER Hanoi(汉诺塔问题) ...

  4. 汉诺塔的递归实现,看完就懂了

    对于要实现汉诺塔递归程序的同学,我相信有一部分同学还没有真正的玩过汉诺塔这个游戏,我建议先在手机应用商店下载一个汉诺塔游戏去感受一下,当了解了游戏的玩法之后,也更方便你去理解递归代码的逻辑. 下面通过 ...

  5. 个盘子的汉诺塔需要移动几步_看漫画学C++039:递归解汉诺塔

    点击蓝字 关注我们 本话内容 请输入 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号A.B.C),在A杆自下而上.由大到小按顺序放置64个金盘(如 ...

  6. 汉诺塔递归与非递归算法

    问题描述: 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这 ...

  7. 从汉诺塔讲递归的思考方式

    想象你来到某个热带丛林,意外发现了十层之高的汉诺塔.正当你苦苦思索如何搬动它时,林中出来一个土著,毛遂自荐要帮你搬塔.他名叫二傻,戴着一个草帽,草帽上有一个2字,号称会把一到二号盘搬到任意柱. 你灵机 ...

  8. python汉诺塔游戏_Python实战:搭建汉诺塔小游戏,快和小伙伴一起玩玩吧

    汉诺塔游戏:看谁能在短时间内将排好顺序的圈,按同样的顺放在另一根柱子上,每次只能动一个. 今天用python搭建汉诺塔小游戏(简约版) 代码亲测有效!源代码如下: #左中右塔用一个列表存储 left ...

  9. 杭电 汉诺塔问题总结

    看了一下杭电的各种汉诺塔问题,遇到些奇奇葩葩的小问题,也有很多很好的思想,比如最后一题,来来回回的颠倒很有意思.总结一下: Pro.ID 1207 :http://acm.hdu.edu.cn/sho ...

  10. 时隔七个月,我终于弄懂了汉诺塔的思想

    目录 1.问题描述 2.汉诺塔的分析 3.博主的反思 4.代码详解 博主在大一的上学期开学没多久看的汉诺塔,在看的过程中,很多地方似懂非懂,但是博主当时没有细品,便匆匆跳过,直到最近感觉自己递归学的不 ...

最新文章

  1. 16 条 yyds 的代码规范
  2. Ubuntu 安装 opencv-nonfree
  3. bootstrap 模态框垂直居中实现方法
  4. [Python人工智能] 十.Tensorflow+Opencv实现CNN自定义图像分类案例及与机器学习KNN图像分类算法对比
  5. [IE 技巧] 显示/隐藏IE 的菜单/工具栏
  6. 大数据资产管理在腾讯游戏的实践
  7. Git入门教程(1)
  8. 8张图带你轻松温习Java知识
  9. 跨程序提供及获取内容
  10. 吴恩达神经网络和深度学习-学习笔记-2-激活函数
  11. java 网络字节序转主机字节序_C语言高级编程——网络编程技术
  12. (转)中国首单运用区块链技术的交易所ABS获批
  13. Quartus II 12.1安装及破解
  14. 魔兽争霸3冰封王座添加自定义地图
  15. 仓库管理软件中的账套是什么意思
  16. 计算机无限开机,电脑开机无限循环重启
  17. 锐龙R3 4300U怎么样 相当于什么水平
  18. Vant IndexBar 在小程序中的简单使用
  19. QtCreator添加文件夹
  20. PDPS15.0机器人汽车件焊接 喷涂 人机仿真视频教程

热门文章

  1. PM Interview 60quiz
  2. Office Word 2010 2013 插入复选框 方框打勾 对号
  3. java生成word 框勾_Java根据word模板生成word文档之设计详细思路—word标签定义 | 学步园...
  4. 【摄影测量】利用经度L、纬度B、大地高h及heading pitch roll飞行姿态角将IMU惯导坐标系转换到WGS84坐标系
  5. 大地主题的解算 matlab,大地主题解算.PPT
  6. 台达内部速度指令_台达PLC连续脉冲输出如何控制速度
  7. ipad4越狱显示服务器维修,iPad越狱后怎么恢复出厂设置及恢复中所出现问题的解决方法...
  8. 【Redis】2. 入门篇
  9. Arcgis实现nc数据区域裁剪并输出nc文件
  10. 滴滴入局同城货运,一场闪电战,还是持久战?