汉诺塔

深入浅出『汉诺塔』 汉诺塔是一道非常经典的递归问题,提到汉诺塔,你是否心有余悸呢?本文带你深入浅出汉诺塔!理解递归问题的求解。 阅读详情

Problem Description
汉诺塔(又称河内塔)问题是印度的一个古老的传说。

开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒A、B和C,A上面套着n个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从A棒搬到C棒上,规定可利用中间的一根B棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。

僧侣们搬得汗流满面,可惜当n很大时这辈子恐怕就很搬完了。

聪明的你还有计算机帮你完成,你能写一个程序帮助僧侣们完成这辈子的夙愿吗?
Input
输入金片的个数n。这里的n<=10。
Output
输出搬动金片的全过程。格式见样例。
Sample Input
2
Sample Output
Move disk 1 from A to B
Move disk 2 from A to C
Move disk 1 from B to C
Hint
可以用递归算法实现。

代码:

#include <stdio.h>
#include <stdlib.h>
void move(int n,char a, char b,char c)
{
    if(n==1)
    printf("Move disk %d from %c to %c\n",n,a,c);
    else
    {move(n-1,a,c,b);
    printf("Move disk %d from %c to %c\n",n,a,c);
    move(n-1,b,a,c);}
}
int main()
{
    int n;
    scanf("%d",&n);
    move(n,'A','B','C');


    return 0;
}

python实例——看看汉诺塔问题 python实例——看看汉诺塔问题1. 问题背景2. 问题导入3. 问题分析4. 准备5. 试编写6. 完善7. 最后说说 1. 问题背景 在世界某个地方有一个很虔诚的宗教组织,其中僧侣维护着一项神圣任务: 保持宇宙的时间。在时间的最开始,僧倡在平台上竖立了3个垂直杆,在最左侧杆上有64个不同半径的金色同心圆盘,直径较大的圆盘堆放在下方,形成了金字塔样子的整体外观。僧侣们的任务是将所有圆盘从最左侧... 阅读详情

相关推荐

python—汉诺塔问题及受限的汉诺塔问题

2025-2-13。

m0_75055441的博客 1176

汉诺塔系列:HDU 2064,2077

汉诺塔ⅲ题目链接:       HDU 2064汉诺塔Ⅲ题目:汉诺塔III                                                 时间限制:1000/1000 MS(Java / Others)内存限制:32768/32768 K(Java / Others)问题描述约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下,...

随便写写的博客 544

[HDU 1207] 汉诺塔II (四柱汉诺塔)

描述 经典的汉诺塔问题经常作为一个递归的经典例题存在。可能有人并不知道汉诺塔问题的典故。汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往上按大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一回只能移动一个圆盘。有预言说,这件事完成时宇宙会在一瞬间闪电式毁灭。也有人相信婆罗...

asdkjc的博客 1697

汉诺塔C语言实现

汉诺塔(10分) 题目内容: 汉诺塔是由三根杆子A,B,C组成的。A杆上有N个(N>0)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面; 可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则。 输入圆盘数N,给出移动步骤。 输入样例: 1 输出样例: Step1: Move Disk1 from A to C 输入样例: 2 输出样例: Step1: Move Disk1 from A

qq_48954044的博客 595

【C语言】递归详解汉诺塔问题

递归 + 图解详细讲解汉诺塔移动次数和打印的过程

StackFrame 2万+

Keil MDK安装NRF52832开发环境全攻略(附系统时间错误解决方案)

本文详细介绍了如何使用Keil MDK搭建NRF52832开发环境,包括基础软件安装、项目配置关键步骤以及常见问题解决方案。特别针对系统时间错误导致的编译失败问题提供了实用解决方法,帮助开发者快速上手NRF52832开发。

weixin_29168153的博客 505

【C++学习】函数(二)——递归调用(详解汉诺塔问题)

递归问题解决的关键在于分解找出子问题,而不在于在脑子里模拟出每一步是如何运行的,尤其面对更复杂的问题时,要靠人脑解决全过程是十分困难的。递归的过程其实就是不断调用函数的过程,在这方面,程序的运行思路是严格依照代码运行顺序执行的,和人脑的思路不太一样,所以递归问题千万不能复杂化,不需要执意弄清楚每一步是如何产生的,而是要找准递归的子问题,分析递归过程。

m0_74301063的博客 2800

华为2024机考真题集合

2.中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以 2,所得的结果就是中位数。在实际考试中会随机抽三道题目进行考察,其中两道100分卷题和一道200分卷题,总共400分。幼儿园组织活动,老师布置了一个任务:每个小朋友去了解与自己同一个小区的小朋友还有几个。3.查找整型数组中元素的众数并组成一个新的数组,求新数组的中位数。1.众数是指一组数据中出现次数量多的那个数,众数可以是多个。

qq_25360769的博客 5093

递归调用:汉诺塔

题目:编程解决汉诺塔问题,使用数据结构栈(偷个懒,如果不知道汉诺塔是什么,请自行Google) 解答一:递归调用 汉诺塔是个非常经典的问题,讲递归时应该都会讲到它。如果我们没有递归的先验知识, 直接去解答这道题,常常会觉得不知道如何下手。用递归却可以非常优美地解决这个问题。使用递归的一个关键就是,我们先定义一个函数,不用急着去实现它, 但要明确它的功能。 对于汉诺塔问题,我们定义如下函数原型

我的专栏 2111

高效获取Sentinel-2影像:哥白尼数据中心下载全流程解析

本文提供了一份从哥白尼数据中心高效下载Sentinel-2卫星影像的保姆级指南。详细解析了从账号注册、使用Copernicus Browser界面、精准划定研究区域,到利用云量覆盖、时间范围等关键条件筛选L2A地表反射率产品的全流程,旨在帮助用户快速获取高质量遥感数据,避免常见错误。

weixin_29247219的博客 258

嵌入式开发实战:如何用cJSON库在STM32上实现轻量级JSON通信(附完整代码)

本文详细介绍了如何在STM32嵌入式系统中使用cJSON库实现高效的JSON通信方案。针对嵌入式环境的内存限制,提供了内存优化策略、cJSON库的深度定制方法以及完整的通信流程实现代码,帮助开发者解决JSON解析效率低下和跨平台兼容性等核心挑战。

star5的专栏 472

汉诺塔系列问题: 汉诺塔II、汉诺塔III、汉诺塔IV、汉诺塔V、汉诺塔VI

汉诺塔 汉诺塔II hdu1207: 先说汉若塔I(经典汉若塔问题),有三塔,A塔从小到大从上至下放有N个盘子,现在要搬到目标C上, 规则小的必需放在大的上面,每次搬一个,求最小步数。这个问题简单,DP:a[n]=a[n-1]+1+a[n-1],先把 上面的n-1个放在B上,把最大的放在目标C上,再把N-1个放回到C上即可。 网上的一种最优解法如下:(1)将x(1 #inc

Coding A World 3765

Ad hoc网络路由协议概述4——按需路由协议(2)AODV协议 (Ad-hoc on-demand distance vector algorithm protocol)

AODV协议的基本流程。

weixin_42982240的博客 7705

汉诺塔 - Java

文章目录汉诺塔简介:我们想要实现的是 让 A柱上的盘子,移动到C柱上1层汉诺塔2层汉诺塔3层汉诺塔详解图第一步第二步第三步第四步第五步第六步第七步经过上面的图解,相比大家一定在一定程度了解到汉诺塔的游戏规则,以及怎么去玩。程序如下3层汉诺塔的输出结果附图(可以返回去看看,对一对)有什么疑问,可以在下方讨论,切记 不要自己带入一个特别大数字去展开,带入一个 1 ~3 ,了解规律就行。不主张展开,主张掌握规律(递推公式)。本文结束。 汉诺塔简介:   我们想要实现的是 让 A柱上的盘子,移动到C柱上 1层汉

DarkAndGrey的博客 6536

STM32+ESP8266接入OneNet物联网平台全流程

MQTT协议是物联网设备与云平台通信的主流轻量级消息传输标准,其发布/订阅模型天然适配嵌入式资源受限场景;OneJSON作为中国移动OneNet平台定制的数据格式,在标准JSON基础上精简Schema、降低解析开销,显著提升STM32等MCU的处理效率。该技术组合兼顾安全性、低功耗与工程可量产性,广泛应用于环境监测、智能仪表、工业传感器等远程数据采集系统。实际落地需协同完成云平台物模型定义、Token动态认证、MQTT Topic严格构造、AT指令可靠交互及单总线传感器数据融合等关键环节。本文以DS18B2

u5v6w7的博客 1120

鸿蒙之HML语法参考

HML(HarmonyOS Markup Language)是一套类HTML的标记语言,通过组件,事件构建出页面的内容。页面具备数据绑定、事件绑定、条件渲染和逻辑控制等高级能力。

2401_82772199的博客 1649

汉诺塔问题学习报告

汉诺塔问题学习报告 (如解析和参考有错误或可以精进之处,欢迎批评指正。) 法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵

eliyou的博客 6686

信创环境下,软件测试如何破局?

毕竟,在自主可控的道路上,每一行通过测试的代码,都在为信创产业的未来添砖加瓦。未来,测试工程师不仅要验证软件在信创环境的可用性,更要基于国产软硬件的特性,推动软件进行 “原生设计”—— 例如,针对国产 CPU 的多核架构优化代码,基于国产数据库的索引机制提升查询效率。某政务云平台的测试数据显示,在 “飞腾芯片 + 麒麟操作系统” 环境下,系统的并发处理能力较传统环境下降约 15%,测试团队通过优化软件的线程调度逻辑,最终将性能损失控制在 5% 以内 —— 这正是信创性能测试的价值所在。

weixin_45608163的博客 886

汉诺塔问题

约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到中间的杆上,条件是一次只能移动一个盘,且不允许大盘放在小盘的上面。由于条件是一次只能移动一个盘,且不允许大盘放在小盘上面,所以64个盘的移动次数是:18,446,744,073,709,551,615。每次移动的记录为例如 a->3->b 的形式,即把编号为3的盘子从a杆移至b杆。整数为盘子的数目,后三个字符表示三个杆子的编号。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 4718

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

汉诺塔详解

汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 玩法: 1每次仅允许移动一个碟子的位置。 2在任意一次移动中,较小的盘子不得被置于较大的盘子下方。 3全部圆盘在起始柱上,最后所有圆盘要到目标柱上。 由此玩法易知,我们需要将最

weixin_74045050的博客 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

本文章的内容 1.汉诺塔的背景/规则 2.汉诺塔的逻辑 3.汉诺塔的代码实现 4.汉诺塔的移动次数 希望能帮助大家学会汉诺塔

龟龟的博客 3136

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

汉诺塔问题深度解析

汉诺塔问题(Tower of Hanoi)不仅是理解递归算法的绝佳案例,还蕴含着丰富的数学规律和逻辑思维。本文我将全面深入地介绍汉诺塔问题的起源、问题描述、递归求解原理、多语言实现、复杂度分析,以及其在实际场景中的拓展与应用

1537

四盘汉诺塔

题意 在传统的汉诺塔游戏中多加了一个盘子。 问把n层的汉诺塔从第一个盘子移到第四个盘子需要多少步? 思路 重温经典汉诺塔 要将n层从1号盘移动到3号盘,需要分为三步: 1:把n-1层从1号移动到2号(n层要移动到3号,为了不影响n层的移动只能移动到2号) 2:把n层从1移动到3号 3:把n-1层从2号移到3号 把第一个步骤又能细分成类似的三步 直到当前移动的总层数为1,只需要一步,递归。 所以经典汉诺塔游戏中,n层最小移动步数为 d[n] = d[n-1] + 1 + d[n-1] d[1] = 1 四盘汉

X_X的博客 5053
下一篇: 青蛙过河
Du_Chunfeng
博客等级 码龄8年 13粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值