汉诺塔——老夫不管什么分析不分析,直接粗暴
直接上图开干: 1个盘子直接从A放到C(递归出口),大于1个不管你有多少盘子,我始终把你当成两个盘子,即第n个和第(n-1)个,那就是把(n-1)放到B,把n放到C,再把(n-1)放到C,递归思想大功告成;
直接上代码:
void Prinmove(int num,char a,char b)
{printf("%d盘:%c->%c\n",num,a,b);
}void Move(int num,char A,char B,char C) //三根柱子 A,B,C
{if (num == 1) //当n=1,直接从A->c{Prinmove(num,A, C);return;}elseMove(num - 1, A,C,B);//将(n-1)放在B柱子上Prinmove(num,A, C);//将第n个放在C上Move(num - 1, B, A, C);//再将(n-1)个从B放到C
}int main()
{int num = 0;printf("请输盘数\n");scanf("%d", &num);Move(num,'A','B','C');system("pause");return 0;
}
递归不要太纠结每一个函数运行的过程,太复杂容易乱,要从递归本质出发,将其分解成与原问题相似的小问题来解决,比如汉诺塔,始终是n和(n-1)的事儿,将出口找好,整体分解一次,依次递归;
汉诺塔——老夫不管什么分析不分析,直接粗暴相关推荐
- 汉诺塔问题【算法设计与分析】
实验内容: 分别计算 4阶/6阶汉诺塔问题,统计各自需要多少移动步数 问题分析: 可以把n个盘子抽象为两个盘子,上面"一个"由1~n-1号组成,下面的"一个"由 ...
- 汉诺塔c语言源程序步骤,汉诺塔问题的算法分析及C语言演示程序的实现
摘要:该文对经典的"汉诺塔"问题进行了详细的分析,并用C语言实现.通过问题的具体实现,使学习者了解问题的全过程,推广到一般. 关键词:汉诺塔;递归;C语言 中图分类号:TP301. ...
- 从“递归结构”到解汉诺塔问题的求解
解决递归问题的关键在于寻找递归的结构. 寻找一个可递归问题的递归结构,不仅可以直观地转换为程序语言,进行问题的求解,而且也为我们人脑对问题的求解提供思路,比如3阶的汉诺塔,我们还可简单设计方案,倘若四 ...
- 算法笔记 —— 汉诺塔详解
文章目录 一.问题来源 二.小游戏体验 三.思路分析 四. 程序实现 一.问题来源 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号X.Y.Z),在 ...
- 汉诺塔的非递归实现(借助堆栈模拟递归)
汉诺塔的非递归实现 借助堆栈以非递归(循环)方式求解汉诺塔的问题(n,a,b,c).即将n个盘子从起始柱(标记为"a")通过借助柱(标记为"b")移动到目标杜( ...
- 算法 - 递归实现汉诺塔(The Tower of Hanoi)
目录 引言: 分析: 分析两片汉诺塔的迁移过程: 分析三片汉诺塔的迁移过程: 代码实现: 递归出口: 递归过程: 完整程序代码: 运行结果: 参考资料: 引言: 今天接触到了一个非常有意思的 ...
- C语言实现汉诺塔问题(保姆式讲解)
前言: 大家好,又是再一次分享文章,我十分感谢各位能够点开这篇花费我颇多时间才解决的汉诺塔问题,接下来我就要分享一下自己的所思所想,希望能给各位带来一些不一样的收获吧. 提醒: 汉诺塔问题的本质是函数 ...
- 汉诺塔python代码解释_python实现汉诺塔算法
题目: 汉诺塔给出最优解,如果对汉诺塔的定义有不了解,请翻看数据结构教材. 除了最基本的之外,还有一题,给定一个数组,arr=[2,3,1,2,3],其含义是这是一个有5个圆盘的汉诺塔,每一个数字代表 ...
- 汉诺塔算法python_python实现汉诺塔算法
题目: 汉诺塔给出最优解,如果对汉诺塔的定义有不了解,请翻看数据结构教材. 除了最基本的之外,还有一题,给定一个数组,arr=[2,3,1,2,3],其含义是这是一个有5个圆盘的汉诺塔,每一个数字代表 ...
最新文章
- 提取操作系统的基本信息(内核、系统版本、网络地址等)
- ML之xgboost:利用xgboost算法(结合sklearn)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
- Android中使用GridView实现标签效果源码
- 左神算法:反转单向和双向链表(Java版)
- WebService SOAP、Restful和HTTP(post/get)请求区别
- git add * 提示warning: LF will be replaced by CRLF in 解决办法
- IntelliJ IDEA 学习笔记
- Path Sum leetcode java
- “你在哪里上班?”“呵呵呵!”
- UI设计素材字体|三明治3D文字效果– 3个角度
- 理解 Memory barrier(内存屏障)【转】
- NodeJs从零构建代理ip池(一)介绍
- windows10 安装 rancher desktop及测试案例
- 普元云计算-你适合微服务么:实施微服务的4个先决条件和重点工作
- 最简单的Qt配置opencv教程
- oracle建表默认now,oracle建表脚本当中使用默认值_oracle
- px4讲解(一)历史起源
- HDWiki的兼容性问题
- ECharts中使用tooltip时鼠标移入抖动问题
- Android点9图机制及在聊天气泡中的应用
热门文章
- openstack部署过程4
- sketch html尺寸,SketchSize一键生成多尺寸,为何你的设计效率如此之高?
- Latex表示随机变量相互独立,不独立
- 【uni-app】App实现二维码分享图合成(支持单张或多张)
- [洛谷P3262]战争调度
- java ee中如何编译,【Javaweb】于Eclipse for JavaEE中编译一个项目Tomcat下的webap
- 天价月饼被套上“紧箍咒”,499元成天花板?
- 计算机专业网名英语翻译,个性网-网名-各种英文网名带翻译*英文网名
- 推荐系统 | 威尔逊区间法
- 机器人瓦力 配乐_机器人瓦力中的插曲是什么?