当前位置: 首页 > news >正文

【C语言练习】汉诺塔

一、题目

介绍:汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
游戏要求:
1、每次只能移动一个圆盘。
2、圆盘只能放置在比它大的圆盘上。
3、圆盘在新的柱子上也是从上到下、从小到大排列。

二、分析

假设n表示个圆盘个数,三根柱子分别用A,B,C进行表示,n个圆盘最初均放在A柱上,我们要将圆盘全部移到C柱上。
在这里插入图片描述
n = 1时,我们只需要1步就能将圆盘移动到C柱:A —> C
在这里插入图片描述
n = 2时,需要3步才能将圆盘移动到C柱:A —> B、A —> C、B —> C
在这里插入图片描述
n = 3时,需要7步才能将圆盘移动到C柱:A —> C、A —> B、C —> B、A —> C、B —> A、B —> C、A —> C
在这里插入图片描述
对于n个圆盘,我们可以参照3个盘子移动的情况,先将A柱上面的n - 1个圆盘通过C柱移动到B柱,剩下最大的那个圆盘直接移动到C柱,B柱上的圆盘通过A柱再移动到C柱上。其需要移动的次数为2^n-1次或者是n - 1个圆盘移动次数乘以2减1。(递归)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以把问题看成是把大象塞进冰箱:①打开冰箱门;②把大象关进冰箱;③关上冰箱门

三、代码实现

移动轨迹:

#include <stdio.h>void Move(char x, char y)
{printf("%c ——> %c ", x, y);//移动轨迹
}void Hanoi(int n, char A, char B, char C)
{	if(n ==1)Move(A, C);else{	Hanoi(n - 1, A, C, B);//上面n - 1个通过C柱移动到B柱Move(A, C);//底部最大圆盘直接移动到C柱Hanoi(n - 1, B, A, C);//n - 1个圆盘通过A柱移动到C柱}
}int main()
{int n = 0;scanf("%d", &n);Hanoi(n, 'A', 'B', 'C');//n个圆盘从A柱挪到C柱return 0;
}

运行结果:
在这里插入图片描述
移动次数:

#include <stdio.h>int Hanoi(int n)
{if(n == 1)return 1;elsereturn 2 * Hanoi(n - 1) + 1;//移动次数是n - 1个圆盘移动次数乘2减1
}int main()
{int n = 0;scanf("%d", &n);int ret = Hanoi(n);printf("%d", ret);return 0;
}

运行结果:
在这里插入图片描述

http://www.dtcms.com/a/351341.html

相关文章:

  • 金融市场微观行为分析结合深度学习的大单过滤与短期价格预测框架
  • 【资源分享】破解极域电子教室
  • 【云计算】云原生(Cloud Native)
  • 三、显示3D文字
  • 【车载开发系列】CS+ for CC开发环境IDE
  • 探索 3D 模型格式:综合指南glTF/GLB 格式
  • CVPR论文速递 | DL3DV-10K:10K+真实场景,打破三维视觉数据荒!
  • Maya绑定基础:创建骨骼和蒙皮、蒙皮权重控制的两种方法
  • 当自然语言遇上数据库:Text2Sql.Net的MCP革命如何重新定义开发者与数据的交互方式
  • 腾讯云DTS数据库迁移底层原理与实战解析
  • 云上“安全管家”|移动云以云安全中心为企业数字化升级保驾护航
  • MySQL 面试题系列(三)
  • 模块 PCB 制造:高频场景下的工艺难点与猎板质量管控体系
  • CentOS 7 服务器初始化完整流程
  • 文献阅读笔记【雷达辐射源识别】:Recognition of Unknown Radar Emitters with Machine Learning
  • 2025.8.26周二 在职老D渗透日记day26:pikachu文件上传漏洞 前端验证绕过
  • Hive高阶函数之行转列JSON数据解析
  • php程序设计之基于PHP的手工艺品销售网站/基于php在线销售系统/基于php在线购物商城系统
  • Redis之Keys命令和Scan命令
  • 后端Web实战-部门管理开发
  • BA 楼宇自控系统 + AI:重构楼宇设备管理的 “智能决策” 体系
  • 『专利好药用力心脑血管健康』——爱上古中医(28)(健康生活是coder抒写优质代码的前提条件——《黄帝内经》伴读学习纪要)
  • 阿里云 ECS 可观测性最佳实践
  • 【Canvas与旗帜】上三常之中国
  • PMP项目管理知识点-⑧ 项⽬质量管理
  • 【传奇开心果系列】Flet框架实现的图形化界面的PDF转word转换器办公小工具自定义模板
  • sed截取慢SQL大文件并导出指定时间范围内容
  • 数据结构(时空复杂度)
  • VMware 中 Ubuntu 右上角网络图标消失的 5 种终极修复方案
  • 腾讯开源OpenTenBase深度实践:企业级分布式HTAP数据库部署全攻略