蓝桥杯真题(Python)每日练Day3

题目

请添加图片描述

题目分析

  1. 为了找到满足条件的放置方法,可以带入总盘数为2和3的情景,用递归做法实现。
  2. == A中存在1 2两个盘,为了实现最少次数放入C且上小下大,先将1放入B,再将2放入C,最后将1放入C即可。同理当A中存在1 2 3 三个盘时,可将1 2盘看成整体,再理解整个过程可以发现,把N个圆盘的问题递归成N-1个圆盘的问题即可。==

题解1(递归)

#可联想两个盘和三个盘的时候摆放的过程
def hanio(x,y,z,n):
  global sum#设置全局变量sum统计移动次数
  if (n==1):#当移动到A柱只有一个盘子的时候
    sum+=1
    if(sum==m):#此时如果要满足题目要求条件,当移动到A柱只有一个盘子的时候,A的最后一个盘子必须移动到C柱
      print(f"#{n}: {x}->{z}")
  else:#A的最后一个盘子的上一个盘子一定是移动到B
      hanio(x,z,y,n-1)#一定是从A移动到B
      sum+=1
      if sum==m:
        print(f"#{n}: {x}->{z}")
      hanio(y,x,z,n-1)#此时是最后一步把B柱的盘放到C柱
n,m=map(int,input().split())
sum=0
hanio('A','B','C',n)
print(sum)

题解2(栈)

  1. 利用栈实现。
st =  [[0 for i in range(30000)] for i in range(4)]#创建一个二维数组[[],[],[],[]]
sum,m = 0,0
def move(x, y, n):
    global sum,m#定义全局变量
    element = st[x].pop()#pop方法移出并返回值
    st[y].append(element)
    sum +=1
    a,b ='',''    
    if x==1: a='A'
    if x==2: a='B'
    if x==3: a='C'
    if y==1: b='A'
    if y==2: b='B'
    if y==3: b='C'
    if sum == m: print('#',n,': ',a,"->",b, sep="")# sep=""表示后面没空格
def hanoi(n,x, y, z):    
    if (n == 1): move(x,z,n)
    else:
        hanoi(n-1,x, z, y)
        move(x,z,n)
        hanoi(n-1,y, x, z)        
n, m = map(int, input().split())
for i in range(n):  st[1].append(i)#初始化栈,st[1]表示A
hanoi(n,1,2,3)
print(sum)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

柔性数组和C语言内存划分

柔性数组和C语言内存划分 1. 柔性数组1.1 柔性数组的特点:1.2 柔性数组的使用1.3 柔性数组的优势 2. 总结C/C中程序内存区域划分 1. 柔性数组 也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。 C99 中&#xff…

以太坊账户地址与比特B地址生成方法对比

作者 张群(赛联区块链教育首席讲师,工信部赛迪特聘资深专家,CSDN认证业界专家,微软认证专家,多家企业区块链产品顾问)关注张群,为您提供一站式区块链技术和方案咨询。 以太坊和比特B地址在生成方…

C语言——内存函数介绍和模拟实现(memcpy、memmove、memset、memcmp)

之前我们讲过一些字符串函数(http://t.csdnimg.cn/ZcvCo),今天我们来讲一讲几个内存函数,那么可能有人要问了,都有字符串函数了,怎么又来个内存函数,这不是一样的么? 我们要知道之前…

【C语言】指针进阶之sizeof和strlen函数的对比

目录 1.sizeofyu 2.strlen函数 3.sizeof与strlen的对比 1.sizeof >>sizeof计算变量所占内存内存空间 大小 的,单位是 字节 ,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的大小。 >>sizeof 只关注占⽤内存空…

Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)

目录 Spring(概述特点IOC原理IOC并操作之bean的XML管理操作)概述Spring是轻量级的开源的JavaEE框架Spring可以解决企业应用开发的复杂性Spring有两个核心部分ioc,aopSpring特点 loc(概念和原理)什么是 IOCIOC 底层原理IOC 过程图 IOC(接口&am…

Java和Redis实现一个简单的热搜功能

1. 前言 我们有一个简单的需求: 搜索栏展示当前登陆的个人用户的搜索历史记录,删除个人历史记录。用户在搜索栏输入某字符,则将该字符记录下来 以zset格式存储的redis中,记录该字符被搜索的个数以及当前的时间戳 (用…

阿里云优惠整理,最新2024阿里云优惠政策解读

阿里云优惠政策有哪些?2024年阿里云优惠政策风向改了,之前一直是老用户与狗的营销策略,今年阿里云2核2G、3M固定带宽服务器99元居然开启了老用户购买权限,并且续费不涨价,阿里云这波操作确实让用户赢麻了,在…

MBR扇区修复和GRUB引导修复实验

修复MBR扇区 步骤一:在进行实验之前我们需要新加一块磁盘,并对新加磁盘进行分区处理,用来备份sda磁盘的MBR及分区表信息。(注:在实验中可以不像我如此这么繁琐,一个主分区,并格式化挂载即可&am…

PyQt5 快速入门(一)

第一节按钮控件,文本控件,输入框,app图标 文章目录 一.GUI按钮控件 二.文本控件 三.输入框 四.让窗口显示在屏幕中央 五.让窗口显示在屏幕中央 总结 一.GUI按钮控件 import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButtonif __name__ __main__:app …

UG制图-视图与投影

当我们进入图纸页后,我们需要对产品进行投影然后进行标注 注意:如果是从零件3D中直接进入制图,默认情况下图框所在的图层是不显示的,我们可以通过菜单或者快捷键ctrl L进入图层设置模块,将图层170和173勾选为显示 我…

MacM1Pro Parallels19.1.0 CentOS7.9 Install PostgrepSQL

相关阅读 MacM1Pro安装 Parallels Desktop 19.1.0 https://blog.csdn.net/qq_41594280/article/details/135420241 MacM1Pro Parallels安装Parallels Tools https://blog.csdn.net/qq_41594280/article/details/135398780 MacM1Pro Parallels安装CentOS7.9 https://blog.csdn.n…

Java JVM内存结构 虚拟机栈 本地方法栈 方法区 直接内存

Java Virtual Machine ,Java 程序的运行环境(Java 二进制字节码的运行环境)。 常见的 JVM: 来源维基百科:https://en.wikipedia.org/wiki/Comparison_of_Java_virtual_machines 学习路线: 参考资料&#x…

141基于matlab的齿轮系统非线性动力学特性分析

基于matlab的齿轮系统非线性动力学特性分析,综合考虑齿侧间隙、时变啮合刚度、综合啮合误差等因素下,参数阻尼比变化调节下,输出位移、相图、载荷、频率幅值结果。程序已调通,可直接运行。 141 matlab齿轮非线性动力学 (xiaohongs…

基于Altium Designer 10设计双层印刷电路板的详细步骤

基于Altium Designer 10设计双层印刷电路板的详细步骤 一、基于Altium Designer 10设计双层印刷电路板总纲二、、基于Altium Designer 10设计双层印刷电路原理图三、制作集成库(包括原理图、PCB封装库、PCB 3D库)1、新建集成库2、新建原理图库3、绘制原理图库(1)、手工绘制…

网络数据传输过程

先验知识:OSI模型 OSI网络模型实际上是参考模型,在实际中并不使用,在网络出现问题的时候,可以从一个宏观的整体去分析和解决问题,而且搭建网络的时候并不需要划分为7层,当今互联网广泛使用的是TCP/IP网络模…

【Linux驱动】休眠与唤醒 | POLL机制 | 异步通知 | 阻塞与非阻塞 | 软件定时器

🐱作者:一只大喵咪1201 🐱专栏:《Linux驱动》 🔥格言:你只管努力,剩下的交给时间! 目录 🏓休眠与唤醒🏸内核函数🏸驱动框架及编程 🏓…

《WebKit 技术内幕》学习之五(1): HTML解释器和DOM 模型

第五章 HTML 解释器和 DOM 模型 1.DOM 模型 1.1 DOM标准 DOM (Document Object Model)的全称是文档对象模型,它可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。这里的文档可以是 HTML 文档、XML 文档或者 XHTML 文档。D…

java数组ArrayList(存对象)

1、dade文件 package model;public class dade {private int id;private String name;public dade() {}public dade(int id, String name) {this.id id;this.name name;}public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {…

透明拼接屏代工:专业制造与质量保证

透明拼接屏代工是指专业的代工厂家根据客户的需求,为其生产透明拼接屏产品。随着透明拼接屏市场的不断扩大,越来越多的企业选择通过代工方式快速进入市场。尼伽小编将深入探讨透明拼接屏代工的优势、选择合适的代工厂家以及质量保证等方面的内容。 一、透…

枚举算法(穷举法)(暴力法)

1.什么是枚举 枚举是指在一定范围内将所有情况一一列举,再通过条件判断得到自己想要的答案; 2.枚举核心 3.使用枚举的基本步骤 4.例题 4.1.我国古代数学家张丘建在他的《算经》一书中提出了著名的“百钱买百鸡”问题:鸡翁一值钱五;鸡母一值钱三;鸡雏三…