【递归算法】汉诺塔

用递归算法的来解决汉诺塔问题 汉诺塔 汉诺塔是一个发源于印度的益智游戏,也叫河内塔。相传它源于印度神话中的大梵天创造的三个金刚柱,一根柱子上叠着上下从小到大64个黄金圆盘。大梵天命令婆罗门将这些圆盘按从小到大的顺序移动到另一根柱子上,其中大圆盘不能放在小圆盘上面。当这64个圆盘移动完的时候,世界就将毁灭。 汉诺塔问题源于印度神话 那么好多人会问64个圆盘移动到底会花多少时间?那么古代印度距离现在已经 阅读详情

题目描述

古埃及有个很聪明的人犯了一项死罪,国王要处他死刑,他请求国王赦免他死刑,国王同意了他,但前提是要他完成一个游戏,游戏规则是这样的:
有3个柱子A,B,C,一开始A柱上有N个盘子,按照从小到大的顺序插在A柱上,要求把这N个盘子从A柱上移动到C柱上,移动过程中必须保证不能把大盘子放置在小盘子之上。如下图是N=3时的初始状态:

这个罪犯很聪明,一下子就找出了最少移动次数的方法,他的方法是这样的:先把上面的N-1个盘子移到B柱,再把A柱上最大的那个盘子移到C柱,最后再把B柱上的N-1个盘子移到C柱。
国王在A柱上放置了81个盘子要他完成任务,罪犯虽然想到了方法,但还是选择了立即执行死刑,为什么?
为了研究他为什么做出这样的选择,请你根据盘子数,计算出最少的移动次数。

输入

第一行输入一个整数N(N<=31)

输出

输出一个数表示最少的移动次数。

样例输入

3

样例输出

7

没啥好说的,2的n次方-1,咋来的咱也不清楚。。。 

名副其实的水题,高精度都不需要

#include<iostream>
using namespace std;
int main()
{
	int n,ans=1;
	cin>>n;
	for(int i=1;i<=n;i++)
	ans*=2;
	ans--;
	cout<<ans;
}
汉诺塔递归算法(Python编程) 一、问题描述。 汉诺塔是学习计算机递归算法的经典入门案例,是一个数学难题。其问题为如何将所有圆盘从A移动到C,要求一次只能移动一个盘子,盘子只能在3个标杆(A/B/C)之间移动,更大的盘子不能放在更小的盘子上面。请用Python编写一个汉诺塔的移动函数,采用递归方法解决这个问题,要求输入汉诺塔的层数,输出整个移动流程。 二、问题分析。 如图,假设A上有5层的圆盘。 首先,我们将A上的圆盘分为底层... 阅读详情

相关推荐

用python递归的算法解决汉诺塔问题

关于递归的四条基准法则 基准情形: 必须由某些基准情形,它无需递归就能解出 不断推进: 对于那些需要递归的情形,每一次递归调用都必须要使求解的状况朝接近基准情形的方向推进 设计法则: 假设所有的递归调用都能运行 合成效益法则: 在求解同一问题的同一实例时, 切勿在不同的递归调用中做重复的工作 _________________摘自《数据结构与算法分析(机械工业出版社Mark Allen ...

3547

7-10 汉诺塔问题

相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。

weixin_67334899的博客 329

汉诺塔递归与非递归算法

1. 基本递归算法:原文:https://blog.youkuaiyun.com/hehe5229/article/details/60874167#include&lt;stdio.h&gt;   #include&lt;stdlib.h&gt;   int count=0;   void move(char getone, char putone) {       count++; printf("%c...

llanlianggui的博客 3594

【c语言】每日一题之汉诺塔类型

c语言每日一题

m0_73228832的博客 1163

带你理解 Hanoi 汉诺塔递归算法

一. 由游戏引发的 Hanoi 问题 汉诺塔是根据一个传说形成的一个问题。汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着 64 片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 二. 一种数学问题 我们...

独化蓝翅鸟,越岭万昆仑 4324

python实现汉诺塔递归算法经典案例

@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 学到递归的时候有个汉诺塔的练习,汉诺塔应该是学习计算机递归算法的经典入门案例了,所以本人觉得可以写篇博客来表达一下自己的见解。这markdown编辑器还不怎么会用,可能写的有点格式有点丑啦,各位看官多多见谅. 网上找了一张汉诺塔的图片,汉诺塔就是利用用中间的柱子把最左边的柱子上的圆盘依次从大到小叠上去,说白了就是c要跟原来的a...

python函数基础教程 2390

汉诺塔问题

汉诺塔

m0_72542983的博客 283

在Pycharm中配置Pyqt5工具(2023年新版教程)

在Pycharm中配置Pyqt5相关的三个工具:QtDesigner、PyUIC、PYRCC

网络技术和Python 2万+

汉诺塔问题——C语言递归求解

输入一个整数n, 输出n个汉诺塔移动的步骤 #include<stdio.h> void move(int n,char from,char buf,char to); void main(){ int n; printf("Input:"); scanf("%d",&n); move(n,'A','B','C');//ABC分别代表三个塔柱 } void move(int n,char from,char buf,char to) { if(n==1) //只需要移动一个盘

m0_52977947的博客 305

ctfshow---sql注入(171-213)

这里提一句,为什么不直接替换成acb这种,因为,flag原本就有字母,还原的时候会全部都还原成数字的,数字替换成符号应该也是可以的,这边测试了下除了&#好像别的符号都可以。插入查询后查询语句就会变成这样,由于id=11111这是一个不存在的id,而后面1=1又为真,所以会查询到表内所有的内容,--+是注释后面的字符。因为接受username的时候没有用引号,所以接受单纯的数字,而数字和字符比较会转换类型,字符串会变成数字0进行比较,所以相等。

fainpo的博客 1320

Apollo&Carla联合仿真基本操作

基于UE4开发的开源无人驾驶仿真器PythonAPI自动驾驶传感器(还有理想化的collision detection传感器)用于规划和控制的快速仿真地图生成交通场景(open scenario)仿真ROS集成自动驾驶baseline0.9.15新特性新的车型以及地图基于Omniverse的素材导入基于OSM的三维场景生成。

SLAM小土堆 3799

汉诺塔的图解递归算法

汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根...

Rnan_prince的博客 10万+

javaFx + SpringBoot 启动时报错:No auto configuration classes found in META-INF/spring.factories 解决方法

javaFx+SpringBoot+(de.roskenet:springboot-javafx-support:2.1.6)开发。 直接在idea中运行正常,但打包成jar,之后使用java -jar xxx.jar启动报错,发现日志中有: java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. 以及 at de.felixroske.jfxsuppo

long117long的专栏 4612

汉诺塔——递归算法(c语言实现)

真的很难,自己总结一下,方便自己看也分享给各位。

m0_74389379的博客 1万+

保姆级教程:用YOLOv8/9/10搞定仪表盘指针识别,附完整数据集和Python环境配置

本文提供了一份基于YOLOv8/v9/v10的仪表盘指针检测全流程指南,涵盖环境配置、数据集构建、模型选型、训练调优和部署落地等关键步骤。通过详细的代码示例和实战经验,帮助开发者高效解决工业视觉中的仪表盘检测难题,特别适合电力巡检、智能监控等应用场景。

weixin_29031057的博客 1335

Linux系统遭遇挖矿病毒深度排查与根治指南

本文提供了一份详尽的Linux服务器挖矿病毒排查与根治指南。当CPU异常满载但常规top命令无法定位进程时,需警惕病毒通过ld.so.preload文件隐藏。文章逐步指导如何清除恶意文件、进程、定时任务,并重点应对pamdicks等顽固变种,最后给出深度排查与系统加固方案,确保服务器安全。

weixin_29207533的博客 452

汉诺塔递归算法精讲

本文从手动解决汉诺塔问题,逐步进行过程抽象,对递归算算法解决汉诺塔问题进行了详细的归纳和解释。

退休码农的自留地 5534

SolidWorks速成教程P4-4【装配体 | 第四节】——装配体内修改模型&编辑配合方法&配合报错的解决方法

截止目前已介绍完 SolidWorks装配体的常用功能,但基础薄弱的小伙伴或许对装配体的各类功能还不够熟悉。所以这节将进一步加强装配体的学习,同时介绍新手容易犯的错误。总结出三点,一是装配体内修改模型,二是编辑配合,三是配合报错的解决方法。

嵌入式阿齐Archie 5551

汉诺塔递归算法理解及实现

汉诺塔:(Hanoi)是一种玩具,如图: ![这里写图片描述] (http://img.blog.youkuaiyun.com/20150430225337439) 从左到右 A B C 柱 大盘子在下, 小盘子在上, 借助B柱将所有盘子从A柱移动到C柱, 期间只有一个原则: 大盘子只能在小盘子的下面. 问题理解与描述: 1.问题的理解与描述 问题的形式化表示为: 输入:圆盘数n,3根细杆

鲲鹏望舒 2万+

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

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

汉诺塔问题——递归算法

本文章主要分享作者对递归思想的理解,研究分析如何应用递归算法去解决汉诺塔递归算法的问题,给初学递归算法的读者提供更好的思路,进一步增强初学者对递归思想核心的理解。

Fang_xaopeng的博客 4万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C#汉诺塔递归算法实现

用汉诺塔例子理解递归思想,用C#实现递归

柠檬i的博客 6398

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C语言汉诺塔问题的递归算法

C语言汉诺塔问题的递归算法

langchou的博客 1万+

汉诺塔问题的递归算法和非递归算法分析

汉诺塔问题的递归算法和非递归算法分析 第一次发博客,想要以此记录自己的学习过程,也方便以后查看复习。希望能坚持下去。 问题描述 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置n个金盘(依次标号1到n)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,...

笨手笨脚°的博客 6844

汉诺塔问题——递归算法与非递归算法

汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?

weixin_74128452的博客 1855
上一篇: 【递归算法】梵塔问题
下一篇: 【NOIP2017普及组正式赛】采药
开朗的坤坤
博客等级 码龄5年 11粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值