宇宙都要毁灭了你还在玩汉诺塔?(动画讲解汉诺塔问题)

CSDN话题挑战赛第2期
参赛话题:学习笔记

前言
💖作者龟龟不断向前
简介宁愿做一只不停跑的慢乌龟,也不想当一只三分钟热度的兔子。
👻专栏:C++初阶知识点

👻工具分享

  1. 刷题: 牛客网 leetcode
  2. 笔记软件:有道云笔记
  3. 画图软件:Xmind(思维导图) diagrams(流程图)

在这里插入图片描述

如果觉得文章对你有帮助的话,还请点赞,关注,收藏支持博主🙊,如有不足还请指点,博主及时改正

文章目标:

  • 汉诺塔的规则
  • 分析汉诺塔的逻辑
  • 汉诺塔的代码实现
  • 汉诺塔的移动次数–宇宙毁灭

汉诺塔问题

汉诺塔背景/规则

汉诺塔问题源自印度一个古老的传说,印度教的“创造之神”梵天创造世界时做了 3 根金刚石柱,其中的一根柱子上按照从小到大的顺序摞着 64 个黄金圆盘。梵天命令一个叫婆罗门的门徒将所有的圆盘移动到另一个柱子上,移动过程中必须遵守以下规则:

  • 每次只能移动柱子最顶端的一个圆盘;
  • 每个柱子上,小圆盘永远要位于大圆盘之上;

汉诺塔问题,实际上也是一个递归问题(没学习递归的同学,可以点击链接学习)

在这里插入图片描述

 

 

汉诺塔解法

 

动画讲解递归思路

我们从圆盘个数上,从少到多,来分析一下解决方法,一下我们用n来表示圆盘个数

我们用A B C或者起始柱 辅助柱 目标柱 来表示柱子

n = 1时

在这里插入图片描述

 

n = 2

在这里插入图片描述

n = 3

在这里插入图片描述

这里并不是步遵守游戏规则,一次将两个圆盘从A般到B,而是两个圆盘的情况已经在n = 2的时候演示了

n = 4

在这里插入图片描述

同样的,3层的哈诺塔也已经在n = 3的时候演示。

 

 

类推:无论多少个圆盘,就能给他分解成三步,就类似于把大象装进冰箱

在这里插入图片描述

 

即无论有多少个圆盘,都可以按三步进行分解。

在这里插入图片描述

 

 

递归思路:有n个圆盘需要从A(起始柱)移到C(目标柱),借助B(辅助柱)

可以分解陈有n -1圆盘从A移动到B,底盘从A移动到C,n-1个圆盘从B移动到C

特别注意,进行多圆盘移动的时候,是需要辅助柱的

 

代码实现汉诺塔

void Hanoi(char a,char b,char c,int n)
{if (n == 0)//圆盘数为0,直接返回,递归的限制条件{return;}//1.将n-1个圆盘,从a移动到bHanoi(a, c, b, n - 1);//2.将1个圆盘,从a移动到cprintf("%c -> %c\n", a, c);//3.将n-1个圆盘,从b移动到cHanoi(b, a, c, n - 1);
}int main()
{int num = 0;printf("请输入圆盘个数\n");//有 A B C三个支柱scanf("%d", &num);Hanoi('A', 'B', 'C', num);//第一个参数是:起始柱//第三个参数是:目标柱//第二个参数是:辅助柱//第四个参数:圆盘的个数return 0;
}

 

递归的优缺点

优点:

非常明显,这种大事化小的思维方式,可以大大缩减我们的代码量,便于理解理解整体逻辑

缺点:

  1. 与现实生活的思维方式相差较大,不容易想
  2. 递归程度太深会造成栈溢出(例如死递归)
  3. 部分题目用递归实现特别低效(例如斐波那契)

 

64层汉诺塔等于宇宙毁灭?

已经有人开玩笑说:等你把64层汉诺塔解完,宇宙的毁灭了。

其实这也是可能的,前提是那个人是一个永生的人。

 

在这里插入图片描述

在这里插入图片描述

百度百科上面查询到,28亿宇宙将灭亡,咱们也不是什么大科学家,姑且不谈其真假性,我们来计算一下人解完64层需要花多少时间。

首先我们计算一下n层汉诺塔,需要移动圆盘多少次?

咱们使用上面的程序来找找规律,当然如果你是一个数学大佬,也可以使用数学知识来计算。

n = 3–7次

在这里插入图片描述

n = 4–15次

![在这里插入图片描述]在这里插入图片描述

找规律我们不难发现,n层汉诺塔需要移动圆盘 2的n次方减1次,如果说64层汉诺塔

那就需要移动圆盘2^64 - 1次,即1844.67亿亿

如果一个人移动一次圆盘需要1秒钟,也需要1844.67亿亿秒,很明显,宇宙大人早就去世了。
在这里插入图片描述

 

  假如你对你的校园女神表白了,而你的女神说等你解完64层汉诺塔就嫁给你,那…………这肯定是一个悲伤的故事

建议兄弟回家打开网易云。

在这里插入图片描述

  OK,咱们折起就讲到这里,希望大家能够听懂汉诺塔问题,咱们下期见!

点赞

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/59941.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物理研学论文MATLAB仿真——地月火箭三体问题的数值求解(平面圆形限制性三体问题的研究)

在二十世纪第一次数学家大会上,希尔伯特提出了“完美数学问题”准则,随后他举了两个例子,一个是费马猜想,另一个就是N体问题。近现代研究最多的就是三体问题。 三体问题就是三个天体在万有引力作用下的运动问题。三个天体的质量、…

关于计算机与教育的英语作文,信息技术对教育的影响英文作文

关于”信息技术对教育的影响“的英语作文范文2篇,作文题目:The influence of information technology on Education。以下是关于信息技术对教育的影响的小学英语范文,每篇作文均为真题范文带翻译。 高分英语作文1:The influence of information technology on Education Us…

维普导出参考文献

勾选需要导出参考文献的文章,点击“导出题录” 选择“参考文献”,点击“复制”或“导出”即可

同时处理知网、万方、维普数据库——CiteSpace、Ucinet、Vosviewer等

同时处理知网、万方、维普数据库——CiteSpace、Ucinet、Vosviewer等 全网独家[下文有视频教程] 《CiteSpace、Ucinet、Vosviewer、gephi等文献计量与可视化软件同时处理知网、万方、维普数据库》,结果更加客观、科学、权威! 目前,我们利用…

Zotero 导入中文数据库文献(知网、百度学术、万方和维普数据)

首先打开 github 页面。下载 zip 文件并解压。 zotero 导入中国知网等文献网站学术插件下载地址 打开 zotero 软件,依次打开 编辑 - 首选项 - 高级 - 文件和文件夹 - 打开数据文件夹。 找到本地磁盘文件夹,找到插件文件夹,将 js 文件复制到 …

会议记录管理系统(1)

A.系统分析 B.数据库设计流程 C.搭建系统架构的方法 D.ADODB类库技术的应用 E.熟悉ADODB类库操作mySql的使用方法 F.webBrowser预览与打印 G.生成excel报表 H.分类查询实现的应用 I.文件上传的实现方法 1.开发背景 2.需求分析 3.系统分析 - 系统目标 - 首页设…

小爱音箱mini无法响应的解决方法

1、按音箱的“暂停键”5秒。 2、听到“已进入设置模式”后,橙色灯常亮时在手机上打开小爱音箱app 3、重新设置网络: 选择路由器,路由器链接密码后,当语音提示已连接,说明设置完成。

BI工具如何提升工作效率:以瓴羊Quick BI、观远BI为例

最近一段时间,ChatGPT的横空出世让越来越多的人意识到了数字科技对于人们生活方式、工作方式的巨大变革作用。事实上,在企业中这样的例子早就十分常见。比如瓴羊Quick BI、观远BI等商业智能工具的出现和应用,就为现代企业的管理运营和工作效率…

【QT + OsgEarth】(一)-- 环境配置

OSG概述 OpenSceneGraph(简称OSG)使用OpenGL技术开发,是一套基于Ct平台的应用程序接口(API),它让程序员能够更加快速、便捷地创建高性能、跨平台的交互式图形程序。它作为中间件(middleware)为应用软件提供了各种高级渲染特性,IO&#xff0c…

Windows环境下配置CGAL

环境版本 CGAL-5.5 下载地址&#xff1a;https://github.com/CGAL/cgal/releases/tag/v5.5 Tips: 在该网址下同时下载<GMP and MPFR libraries for Windows 64bits>&#xff0c;并将下载后该文件下的gmp复制到CGAL的auxiliary进行覆盖。 Boost-1-18-0 下载地址&#xff1…

面向黑马头条学习

一&#xff1a;创建项目 进去选择第三个&#xff0c;人工选择&#xff1a; 二&#xff1a;加入git版本管理 查看git日志&#xff1a; github首次创建vuecli &#xff0c;自己提交了第一次代码 第二步&#xff0c;将本地仓库添加远程仓库地址 add后的origin后面地址 的名字&…

黑马头条简述

黑马头条 技术栈&#xff1a;springcloudgateway微服务之前架构的网关服务&#xff0c;实现微服务注册的api请求路由&#xff0c;控制流速和熔断处理 Springbootalibaba Nacos作为项目中注册中心和配置中心 Mybatis-plus作为持久层提升开发效率 Kafka完成内部系统消息通知&…

黑马头条-day02

文章目录 前言一、文章列表加载1.1 需求分析1.2 表结构分析1.3 导入文章数据库1.4 实现思路1.5 接口定义1.6 功能实现 二、freemarker2.1 freemarker简介2.2 环境搭建&&快速入门2.2.1 创建测试工程 2.3 freemarker基础2.3.1 基础语法种类2.3.2 集合指令2.3.3 if指令2.3…

百度沈抖:文心一言将通过百度智能云对外提供服务

2月17日&#xff0c;在2023 AI工业互联网高峰论坛上&#xff0c;百度智能云宣布“文心一言”将通过百度智能云对外提供服务&#xff0c;为产业带来AI普惠。 百度集团执行副总裁、百度智能云事业群总裁沈抖表示&#xff0c;“文心一言”是基于百度智能云技术打造出来的大模型&a…

大模型落地比趋势更重要,NLP+金融如何看得见、摸得着?

全球很多人都开始相信&#xff0c;以ChatGPT为代表的大模型&#xff0c;将带来一场NLP领域乃至整个人工智能的技术革命&#xff0c;影响遍及各行各业。 那么&#xff0c;金融机构和科技企业&#xff0c;应该以怎样的姿态迈入新的洪流&#xff1f; 前不久&#xff0c;有“中国智…

关于算力的未来,新一代PowerEdge告诉你答案

从ChatGPT等大模型海量参数的训练&#xff0c;自动驾驶领域感知模型的训练与仿真&#xff0c;到蛋白质机构预测、流体力学仿真等AIScience&#xff0c;再到矿山、交通、能源等部署广泛的边缘计算设备…… 如今&#xff0c;我们愈发确切地认识到&#xff0c;算力在数字经济时代不…

Meta 推出大型语言模型 LLaMA,比 GPT3.5 性能更高

整理 | 禾木木 责编 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; ChatGPT 的爆火使得大家对 AI 进行了深度的讨论&#xff0c;大厂们也都在向公众展示他们所谓的 "生成性人工智能"已经准备好进入黄金时代。 近日&#xff0c;Meta 宣布…

Chat Bot(聊天机器人)自动化测试脚本来解决人工测试的问题

问题描述&#xff1a;有一个Oliver Cafe Shop聊天机器人&#xff0c;如何实现自动化脚本自动测试这个聊天机器人的功能。 实现效果&#xff1a;通过代码来实现客户端发送请求来代替Bot Framework Emulator输入Tea,然后客户端监听和接收服务器端(Bot)发来的回复(图片中选择drin…

postman发送需要登录验证的请求

使用postman 发送后台需要登录验证的请求 postman需要填写的参数 Authorization的获取方式 打开前台发送一个成功的请求 找到里面的Authorization粘贴到postman参数那里就可进行请求了

Postman发送请求时带上登录信息

正常情况下&#xff0c;没有登录验证等公共接口&#xff0c;用postman进行get或post请求都很方便&#xff0c;加上相应的参数就行。 但是对于某些接口&#xff0c;可能需要先登录后才能请求&#xff0c;这时如果按正常的思路请求&#xff0c;可能就会被拦截了。 对于这种情况…