【分治算法】Hanoi塔问题Python实现

文章目录

    • @[toc]
      • 问题描述
      • `Python`实现

因上努力

个人主页:丷从心·

系列专栏:Python基础

学习指南:Python学习指南

果上随缘


问题描述

  • a a a b b b c c c是三个塔座,开始时,在塔座 a a a上有一叠共 n n n个圆盘,这些圆盘自下而上,由大到小地叠放在一起,各圆盘从小到大编号为 1 1 1 2 2 2 ⋯ \cdots n n n,要求将塔座 a a a上的这一叠圆盘移到塔座 b b b上,并仍按照同样顺序叠置
  • 在移动圆盘时应遵守以下移动规则
    • 每次只能移动一个圆盘
    • 任何时刻都不允许将较大的圆盘压在较小的圆盘之上

Python实现

def hanoi(n, source, target, auxiliary):if n > 0:# 将 n - 1 个盘子从源柱移动到辅助柱hanoi(n - 1, source, auxiliary, target)# 将第 n 个盘子从源柱移动到目标柱print(f'将盘子 {n}{source} 移动到 {target}')# 将 n - 1 个盘子从辅助柱移动到目标柱hanoi(n - 1, auxiliary, target, source)n = 3hanoi(n, 'A', 'B', 'C')
将盘子 1 从 A 移动到 B
将盘子 2 从 A 移动到 C
将盘子 1 从 B 移动到 C
将盘子 3 从 A 移动到 B
将盘子 1 从 C 移动到 A
将盘子 2 从 C 移动到 B
将盘子 1 从 A 移动到 B

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

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

相关文章

最新免费 ChatGPT、GPTs、AI换脸(Suno-AI音乐生成大模型)

🔥博客主页:只恨天高 ❤️感谢大家点赞👍收藏⭐评论✍️ ChatGPT3.5、GPT4.0、GPTs、AI绘画相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容…

虚良SEO怎么有效的对百度蜘蛛权重优化?

人们交换链接通常首先要问的是你BR值是多少?国内搜索引擎来说以百度马首是瞻,无论seo还是竞价都看重的是百度,那么针对百度权重的优化就特别重要了。其实,百度权重是民间的一种说法,百度官方并没有认同这个数值&#x…

mkdir: ‘/opt/hdfsDep‘: Input/output error

执行hdfs dfs -mkdir -p /opt/hdfsDepo时,报错:mkdir: /opt/hdfsDep: Input/output error,应该是配置文件的问题。 参考文章Spark Standalone模式部署-CSDN博客第三章,安装配置好hadoop,并启动,再次执行上…

(回溯)记忆化搜索和dp

动态规划的核心就是 状态的定义和状态的转移 灵神 的 回溯改递归思路 首先很多动态规划问题都可以采用 回溯 的思想 回溯主要思想就是把 一个大问题分解成小问题 比如 采用子集类回溯问题中的核心思想-> 选或不选 或者 选哪个 记忆化搜索之后 我们可以发现 每个新节点依…

Oracle故障处理:ORA-00600错误处理思路

提前说明: 该故障,我只是旁观者。 但处理该故障的DBA工程师,思路很清晰,我非常受教!在此也将经验分享。 目录 项目场景 问题分析 优化建议 项目场景 在某项目数据库运维群,有现场同事发了张报错截图如下…

代码学习记录49---单调栈

随想录日记part49 t i m e : time: time: 2024.04.20 主要内容:今天开始要学习单调栈的相关知识了,今天的内容主要涉及:柱状图中最大的矩形 84.柱状图中最大的矩形 Topic184.柱状图中最大的矩形 题目&…

SQL EXPLAIN select_type 为DERIVED啥意思

在 MySQL 中,当你使用 EXPLAIN 命令来查看查询执行计划时,select_type 字段的取值为 DERIVED 时表示子查询或派生表。 具体来说,select_type 的取值有多种,常见的包括: SIMPLE:简单的 SELECT 查询&#x…

Scikit-Learn支持向量机分类

Scikit-Learn 支持向量机分类 1、支持向量机(SVM)1.1、SVM概述1.2、SVM原理1.3、SVM的损失函数1.4、支持向量机分类的优缺点 2、Scikit-Learn支持向量机分类2.1、Scikit-Learn支持向量机分类API2.2、支持向量机分类初体验(手写数字识别&#…

openFeign拦截器(微服务调用feign接口会造成请求头缺失望周知)

在学习商品甄选项目的时候,当时我的解决方案是在登录的时候存入用户数据 由于懒得看视频 最后才发现 文档最后才给了这个解决方案。。。。 问题说明 在测试的时候,那么service-cart微服务会报错,如下所示: java.lang.NullPoint…

四川易点慧电子商务抖音小店:安全正规,购物新选择

在当今互联网高速发展的时代,电子商务已经成为人们日常购物的重要组成部分。四川易点慧电子商务抖音小店作为新兴的电商平台,凭借其安全正规的经营理念和便捷高效的购物体验,正逐渐赢得消费者的信赖和喜爱。 一、平台背景实力雄厚 四川易点慧…

百钱买百鸡

百钱买百鸡问题可以使用穷举法解决。我们可以使用三重循环来遍历所有可能的公鸡、母鸡和小鸡的数量,然后判断是否满足题目条件,即总花费不超过100元,并且买到100只鸡。(公鸡5元一只,母鸡3元一只,小鸡一元三…

Windows11+Ubuntu20.04系统重装(升级为Ubuntu22.04)

事情起因是标题所对应的双系统中,Ubuntu老自动断电关机,一开始是跑大型程序才会关机,这两天愈演愈烈变成运行一个远程控制或者VSCode就会关机。一怒之下找了Dell在线客服,在对方引导下检测了硬件系统,发现没有明显故障…

Java可变参数和不可变参数

可变参数 Java可变参数允许在方法中传递不定数量的参数。 可变参数是Java 5引入的一项功能,它极大地提高了代码的灵活性和易用性。使用可变参数时,你可以在调用方法时传递任意数量的参数,而这些参数在方法内部被当作数组处理。这意味着你可…

A29 STM32_HAL库函数 之 IWDG通用驱动 所有函数的介绍及使用

A29 STM32_HAL库函数 之 IWDG通用驱动 所有函数的介绍及使用 1 该驱动函数预览1.1 HAL_IWDG_Init1.2 HAL_IWDG_Refresh 该文档修改记录:总结 1 该驱动函数预览 序号函数名描述1HAL_IWDG_Init()初始化独立看门狗(IWDG)。2HAL_IWDG_Refresh()刷新独立看门狗(IWDG)的计…

STM32单片机C语言模块化编程实战:按键控制LED灯详解与示例

一、开发环境 硬件:正点原子探索者 V3 STM32F407 开发板 单片机:STM32F407ZGT6 Keil版本:5.32 STM32CubeMX版本:6.9.2 STM32Cube MCU Packges版本:STM32F4 V1.27.1 之前介绍了很多关于点灯的方法,比如…

4.20 IO流

IO流结构 InputStream(字节输入流) public static void main(String[] args) {// byteInputStream();// byteInputStream1();// byteInputStream2();byteInputStream3();}// 使用字节流时对于中文汉字基本都会出现乱码问题,因此对中文乱码问…

mininet+odl安装

安装环境 ubuntu-18.04.2-desktop-amd64 Java version: 1.8.0_362 Apache Maven 3.6.0 opendaylight: distribution-karaf-0.6.0-Carbon(csdn中应该是已有资源,不让上传) opendaylight的官网下载链接一直打开失败,我使用的是别人的Carbon版本。 在安…

Java中的StringBuilder类

StringBuilder 是 Java 中的一个类,它用于可变字符串的构造或修改。当你需要在一个循环中多次修改一个字符串时,使用 StringBuilder 是非常有用的,因为它比使用 操作符连接字符串的效率要高得多。 StringBuilder 的主要特点如下&#xff1a…

yml文件解析

.yml 后缀的文件可以有多个application.yml # 项目相关配置 用于 RuoYiConfig.java ruoyi:# 名称name: RuoYi# 版本version: 3.8.5# 版权年份copyrightYear: 2023# 实例演示开关demoEnabled: true# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Lin…

C语言结构体,枚举,联合

系列文章目录 第一章 C语言基础知识 第二章 C语言控制语句 第三章 C语言函数详解 第四章 C语言数组详解 第五章 C语言操作符详解 第六章 C语言指针详解 第七章 C语言结构体详解 第八章 详解数据在内存中的存储 第九章 C语言指针进阶 文章目录 1. 结构体 1.1 声明结构…