C语言汉诺塔问题图文详解
设立三根柱子,pos1,pos2,pos3
要求将pos1柱子上的三个圆盘按照顺序移动到pos3柱子上,并且每次只能移动一个圆盘,移动过程中每个柱子上的圆盘都保持下大上小的顺序排列
当只有一个圆盘时,只需一步
假设有三个圆盘a,b,c
移动顺序如下:
将a从A->C 将b从A->B 将a从C->B 将c从A->C 将a从B->A 将b从B->C 将a从A->C
一共七步,可以发现圆盘c只需移动一次就可达成目的,其他圆盘都需经过B柱子中转
即若有n个圆盘,那么(n-1)个圆盘必须先由A柱子转到C柱,再由C柱转到B柱,等A柱剩余最后一个转移到C柱后,再由B柱转移到A柱,最后由A柱转移到C柱子,完成操作
由此逻辑,代码如下:
#include<stdio.h>
int m = 0; //m作为步数,每调用一次move函数m+1
void move(char A, char B)
{
m++;
printf("当前第%d步 %c->%c\n",m, A,B);
}
void Hanoi(int n, char A, char B, char C)
{
if (n == 1)
move(A, C); //当只有一个盘子,A->C
else
{
Hanoi(n - 1, A, C, B); //将(n-1)个盘子A->C->B
move(A, C);
Hanoi(n - 1, B, A, C); //将(n-1)个盘子B->A->C
}
}
int main()
{
int n = 0;
printf("请输入盘子个数");
scanf_s("%d", &n);
Hanoi(n, 'A', 'B', 'C');
return 0;
}
代码运行结果如下:
C语言汉诺塔问题图文详解相关推荐
- 递归经典例题 --- 汉诺塔(图文详解)
目录 一.介绍 二.游戏规则 三.玩法简介 四.算法分析 五.代码解析 六.源码 七.递归过程详解 一.介绍 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具.大梵 ...
- 汉诺塔代码图文详解(递归入门)
游戏规则: 已知条件 存在A,B,C三根柱子,A上套有N片圆盘 (如下图) 目的 将A上的所有圆盘移到C上 约束条件 每次只能移动一片圆盘,且整个过程中只能出现小圆盘在大圆盘之上的情况 首先我们模拟( ...
- java汉诺塔(含汉诺塔问题的详解)
目录 一:汉诺塔问题 二:汉诺塔问题思路 三:图示化思路 四:代码展示 一:汉诺塔问题 汉诺塔问题是一个经典的问题.汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说.大梵天创造世界的 ...
- 汉诺塔问题 Java详解
作为一个Java初学者,看韩顺平老师的递归那一段,提到了汉诺塔的问题,但是大家普遍感到困惑,尤其是韩老师讲到的"借助"这个词,让不少同学感到无法理解. 实际上,借助在三行移动的代码 ...
- c语言汉诺塔实验报告,C语言汉诺塔的简单了解
汉诺塔详解 以4层为例 以下为我的拙见,还希望大佬雅正 要把汉诺塔移动到c 需要把1,2,3层移到b 把4移动到c 在吧123移动到b 但是一次只能动一块 所以我们目前要做的就是把上面三块移动到b 那 ...
- C语言--实现汉诺塔【图文讲解,附代码】
目录 (1)什么是汉诺塔 (2)汉诺塔打印步骤 (3)如何用C语言实现汉诺塔 (4)实现代码 (1)什么是汉诺塔 汉诺塔(Tower of Hanoi),又称河内塔.源自印度古老传说的一个游戏,大 ...
- C语言 - 汉诺塔详解(最简单的方法,进来看看就懂)
文章目录 一.什么是汉诺塔? 二.如何实现捏? 三.如何写代码? 四.为什么需要移动 2^n - 1 次/ 一.什么是汉诺塔? 汉诺塔起源于印度的一个古老传说,传说是什么不重要.重要的是它是怎么实现的 ...
- c语言汉诺塔移动次数,C语言计算汉诺塔最小挪动步数 (二)
C语言计算汉诺塔最小移动步数 (二) 前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较 ...
- c语言 汉诺塔游戏下载,使用C语言解决益智游戏——“汉诺塔”
说明: 文章所有内容截选自实验楼教程[3个C语言实例带你掌握递归方法论],教程里还有两个实例,感兴趣的可以点击查看: 文章主要是带你通过解决这个游戏来利用递归解决实际问题并掌握其核心思想,懂得如何使用 ...
最新文章
- 3_电子商务开发模型与java的关系_计算机网络与软件工程专业作业答案
- 美团外卖商家端视频探索之旅
- String类split方法
- Xcode代码块功能
- 洛谷P2680:运输计划(倍增、二分、树上差分)
- html中相同结构标签怎么区分,html标签结构总结
- MongoDB 教程七: MongoDB和PHP结合开发
- Spring Boot基础学习笔记14:实现文件上传功能
- 无锡东亭计算机培训班,锡山区东亭办公自动化培训、电脑培训班有哪些?
- LAMP架构调优(六)——开启长链接
- PIE SDK专题制图切换模板
- 修改ASP.NET MVC Ajax分页组件ASP.NET MvcPager一个小Bug并修该样式为自己所用(三)...
- wpa_supplicant状态机
- php可以开发大型网站吗?其实这个问题不用回答
- 有趣的游戏-猜黑白纸
- 如何学习一门新的计算机语言
- 使用Caffe尝试DeepID
- kb2919442不适用计算机,Windows运维之Windows8.1-KB2999226-x64安装提示 此更新不适用你的计算机...
- 联通光纤上网配置+华为HG8240光猫+TL-WR842N
- 互联网产品的盈利模式分析