用C语言实现汉诺塔的移动过程并且统计移动的次数
用C语言实现汉诺塔的移动过程以及移动的次数
题目说明
一共有三个柱子,在一个柱子上穿有若干个圆盘,这些圆盘按下大上小叠放,将这个柱子上的圆盘按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
问题要求
用C语言实现汉诺塔的移动过程以及统计移动的次数
样例参考
样例输入:输入盘子的数量n
3
样例输出
a --> c
a --> b
c --> b
a --> c
b --> a
b --> c
a --> c
移动次数:7
C语言代码
#include<stdio.h>
#include<stdlib.h>
int count=0;
void Move(char getone,char putone)
{printf("%c --> %c \n",getone,putone); //显示步骤count++; //统计步数
}void hannuota(int n,char a,char b,char c)
{if(n==1)Move(a,c);else{hannuota(n-1,a,c,b); //将 a 中除了底牌外其余小的的通过 c 暂时放在 bMove(a,c); //将 a 中底牌直接放在 channuota(n-1,b,a,c); //将 b 中的所有小的牌通过 a 放在 c 中底牌的上面}
}int main()
{int m,g=0;scanf("%d",&m);hannuota(m,'a','b','c');printf("移动次数:%d\n",count);return 0;
}
步数总结
1个圆盘的时候 1 --> 2的1次方减1 2个圆盘的时候 3 --> 2的2次方减1 3个圆盘的时候 7 --> 2的3次方减1 4个圆盘的时候 15 --> 2的4次方减1 5个圆盘的时候 31 --> 2的5次方减1 ………… 所以当盘子有n个时,移动的次数为:2 的 n 次方减 1
小白作者声明:以上代码及图解仅供参考,若有不足请大神留言评论!
用C语言实现汉诺塔的移动过程并且统计移动的次数相关推荐
- 汉诺塔怎么加计数次数c语言,C语言计算汉诺塔最小移动步数 (二)
前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较繁琐的.所以又根据这个公式又写了一个. ...
- 最简单的python语言实现汉诺塔游戏
最简单的python语言实现汉诺塔游戏 实现代码 def hanoi(n,ch1,ch2,ch3):if n==1:print(ch1, '->', ch3)else:hanoi(n - 1, ...
- C语言--实现汉诺塔【图文讲解,附代码】
目录 (1)什么是汉诺塔 (2)汉诺塔打印步骤 (3)如何用C语言实现汉诺塔 (4)实现代码 (1)什么是汉诺塔 汉诺塔(Tower of Hanoi),又称河内塔.源自印度古老传说的一个游戏,大 ...
- 【C语言】汉诺塔问题(图文详解)
汉诺塔 1. 什么是汉诺塔 2. 有关汉诺塔的有趣故事 3. 利用动画来演示汉诺塔 4. 如何用C语言实现汉诺塔 1. 什么是汉诺塔 源于印度古老传说的益智玩具 汉诺塔(Tower of Hanoi) ...
- c语言汉诺塔移动次数,C语言计算汉诺塔最小挪动步数 (二)
C语言计算汉诺塔最小移动步数 (二) 前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较 ...
- C语言递归函数——汉诺塔问题笔记
C语言递归函数--汉诺塔问题笔记 学C的时候老师根本没讲过递归,当时自己也没把它当回事,但是递归在算法中的地位实在太重要了.于是翻了翻C课本上的递归,书上讲的不多,但是一个经典的汉诺塔问题就让我伤透了 ...
- c语言实现汉诺塔(图解)
c语言实现汉诺塔 一.汉诺塔简介 二.汉诺塔的实现 一.汉诺塔简介 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根 ...
- 【python】 turtle实现汉诺塔游戏动画过程
[python] turtle实现汉诺塔游戏动画过程 import turtle class Stack: #面向对象,定义一个类def __init__(self):self.items = []d ...
- c语言递归汉诺塔次数,c语言递归解决汉诺塔参数变化的疑惑
c语言递归解决汉诺塔参数变化的疑惑 答案:3 信息版本:手机版 解决时间 2020-04-05 14:20 已解决 2020-04-05 10:49 #include void main() {vo ...
最新文章
- 咨询业或将危害电力信息化进程?
- 第九周项目实践2 二叉树遍历的递归算法
- 一个公式、五大指标帮你构建产品经理数据分析思维
- nosql简答什么是最终一致性_NoSql的三大基石:CAP理论BASE最终一致性
- 微信公众号天气与聊天机器人小功能
- 我也属于80这个年代
- UVa 11998 破碎的键盘(数组实现链表)
- 查看、修改linux系统的最大链接数限制、文件描述符限制、端口范围限制、虚拟内存等
- easyui页内跳转
- Bosh vs Comet vs Long Polling vs Polling
- Flink 1.11 Unaligned Checkpoint 解析
- 《图解算法》第11章之 接下来如何做
- ZedGraph类库之基本教程篇
- 【MATLAB】 曲面的绘制
- R语言一步到位求数据的均值,频数,标准差,标准误差
- matlab 跳步循环,足球训练:每天10分钟挑战7天球感训练
- PADS如何导入DXF文件
- 哈工大计算机科学与捄术学院,[哈尔滨工业大学]管理科学与工程
- 前端规范 - js开发规范
- Uart串口实验--TQ2440
热门文章
- SAP-ABAP性能优化之构建嵌套结构的哈希表
- JavaWeb项目——博客系统
- TeamViewer固定密码远程连接
- 云计算技术的产生、思想、原理、应用和前景
- 云计算有哪些?云计算排排坐,拿去不谢
- Linux 系统设置 : enable 命令详解
- java 打印机类printer_GitHub - 505058216/thermal_printer: Java实现网络小票打印机自定义无驱打印...
- 百度UEdit富文本编辑器的使用
- img-polaroid_这个由AI驱动的宝丽来会散发出幼稚的图画而不是照片
- CentOSnbsp;下mysqlnbsp;ERRORamp;n…