用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语言实现汉诺塔的移动过程并且统计移动的次数相关推荐

  1. 汉诺塔怎么加计数次数c语言,C语言计算汉诺塔最小移动步数 (二)

    前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较繁琐的.所以又根据这个公式又写了一个. ...

  2. 最简单的python语言实现汉诺塔游戏

    最简单的python语言实现汉诺塔游戏 实现代码 def hanoi(n,ch1,ch2,ch3):if n==1:print(ch1, '->', ch3)else:hanoi(n - 1, ...

  3. C语言--实现汉诺塔【图文讲解,附代码】

    目录 (1)什么是汉诺塔 (2)汉诺塔打印步骤 (3)如何用C语言实现汉诺塔 (4)实现代码 (1)什么是汉诺塔   汉诺塔(Tower of Hanoi),又称河内塔.源自印度古老传说的一个游戏,大 ...

  4. 【C语言】汉诺塔问题(图文详解)

    汉诺塔 1. 什么是汉诺塔 2. 有关汉诺塔的有趣故事 3. 利用动画来演示汉诺塔 4. 如何用C语言实现汉诺塔 1. 什么是汉诺塔 源于印度古老传说的益智玩具 汉诺塔(Tower of Hanoi) ...

  5. c语言汉诺塔移动次数,C语言计算汉诺塔最小挪动步数 (二)

    C语言计算汉诺塔最小移动步数 (二) 前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较 ...

  6. C语言递归函数——汉诺塔问题笔记

    C语言递归函数--汉诺塔问题笔记 学C的时候老师根本没讲过递归,当时自己也没把它当回事,但是递归在算法中的地位实在太重要了.于是翻了翻C课本上的递归,书上讲的不多,但是一个经典的汉诺塔问题就让我伤透了 ...

  7. c语言实现汉诺塔(图解)

    c语言实现汉诺塔 一.汉诺塔简介 二.汉诺塔的实现 一.汉诺塔简介 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根 ...

  8. 【python】 turtle实现汉诺塔游戏动画过程

    [python] turtle实现汉诺塔游戏动画过程 import turtle class Stack: #面向对象,定义一个类def __init__(self):self.items = []d ...

  9. c语言递归汉诺塔次数,c语言递归解决汉诺塔参数变化的疑惑

    c语言递归解决汉诺塔参数变化的疑惑 答案:3  信息版本:手机版 解决时间 2020-04-05 14:20 已解决 2020-04-05 10:49 #include void main() {vo ...

最新文章

  1. 咨询业或将危害电力信息化进程?
  2. 第九周项目实践2 二叉树遍历的递归算法
  3. 一个公式、五大指标帮你构建产品经理数据分析思维
  4. nosql简答什么是最终一致性_NoSql的三大基石:CAP理论BASE最终一致性
  5. 微信公众号天气与聊天机器人小功能
  6. 我也属于80这个年代
  7. UVa 11998 破碎的键盘(数组实现链表)
  8. 查看、修改linux系统的最大链接数限制、文件描述符限制、端口范围限制、虚拟内存等
  9. easyui页内跳转
  10. Bosh vs Comet vs Long Polling vs Polling
  11. Flink 1.11 Unaligned Checkpoint 解析
  12. 《图解算法》第11章之 接下来如何做
  13. ZedGraph类库之基本教程篇
  14. 【MATLAB】 曲面的绘制
  15. R语言一步到位求数据的均值,频数,标准差,标准误差
  16. matlab 跳步循环,足球训练:每天10分钟挑战7天球感训练
  17. PADS如何导入DXF文件
  18. 哈工大计算机科学与捄术学院,[哈尔滨工业大学]管理科学与工程
  19. 前端规范 - js开发规范
  20. Uart串口实验--TQ2440

热门文章

  1. SAP-ABAP性能优化之构建嵌套结构的哈希表
  2. JavaWeb项目——博客系统
  3. TeamViewer固定密码远程连接
  4. 云计算技术的产生、思想、原理、应用和前景
  5. 云计算有哪些?云计算排排坐,拿去不谢
  6. Linux 系统设置 : enable 命令详解
  7. java 打印机类printer_GitHub - 505058216/thermal_printer: Java实现网络小票打印机自定义无驱打印...
  8. 百度UEdit富文本编辑器的使用
  9. img-polaroid_这个由AI驱动的宝丽来会散发出幼稚的图画而不是照片
  10. CentOSnbsp;下mysqlnbsp;ERRORamp;n…