最大奖品数-第13届蓝桥杯省赛Python真题精选

news2025/1/18 10:46:25

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第91讲。

最大奖品数,本题是2022年4月23日举办的第13届蓝桥杯青少组Python编程省赛真题编程部分第6题,13届一共举办了两次省赛,这是第二次省赛。题目要求对于给定的N * M矩阵方格数据,请编程计算最多可获得的奖品数。

先来看看题目的要求吧。

一.题目描述

时间限制:3000MS

内存限制:589824K8

编程实现:

有一个N * M的矩阵方格,其中有些方格中有奖品,有些方格中没有奖品。小蓝需要从N * M的矩阵中选择一个正方形区域,如果所选的正方形区域的一条对角线方格中都有奖品,其他方格都没有奖品,就会获得所选区域中的所有奖品,否则不能获得奖品。

当给出N和M的值,及N * M的矩阵方格中摆放的奖品情况

例如:N = 5,M = 6,奖品情况如下:

图片

选择上图红色正方形区域,可以获得最多的4个奖品。

输入描述:

第一行输入两个整数N和M(1 ≤ N ≤ 100,1 ≤ M ≤ 100),N表示矩阵的行数,M表示矩阵的列数,两个整数之间一个空格隔开

接下来输入N行,每行包括M个0或者1(0表示方格中没有奖品,1表示方格中有奖品),0或者1之间一个空格隔开

输出描述:

输出一个整数,表示最多可获得的奖品数

输入样例:

5 6

1 0 1 0 0 0

0 1 0 1 0 0

1 0 0 0 1 0

0 1 0 0 0 1

1 0 1 0 0 0

输出样例:

4

评分标准:

  • 20分:能正确输出一组数据;

  • 20分:能正确输出两组数据;

  • 20分:能正确输出三组数据;

  • 20分:能正确输出四组数据;

  • 20分:能正确输出五组数据。

二.思路分析

这是一道涉及二维矩阵遍历的算法题,涉及的知识点包括循环、条件、二维列表、自定义函数、枚举算法和DFS算法等。

题目有一定的难度,首先得搞清楚构成正方形区域有哪些情况,又有什么特点。

正方形只有一个,但是对角线有两条,一条是从右上到左下,一条是从左上到右下。为了方便描述,我们将前者称为撇,后者称为捺,就是笔画中的撇(丿)和捺(乀),还是挺形象的吧。

图片

我们分别举例说,在一个5 x 6的矩阵方格中,撇构成的正方形如下:

图片

捺构成的正方形如下:

图片

当然,正方形也可能是在中间某个区域,如图:

图片

根据上面的分析,我们应该把焦点放在对角线上,同时还需要注意一点,只有对角线方格全为1,其它位置方格全为0的正方形才能获得奖品

因此,在上面给出的3个例子中,第一个和第三个除了对角线上都是1外,正方形区域内还有其它的方格为1,所以不能获得奖品,第二个例子中可以获得4个奖品。

因此,对于任何一个值为1的单元格,我们都需要计算撇(丿)对角线和捺(乀)对角线的最大长度,同时确保其正方形区域内其它方格内没有1。

为了方便计算,我们可以将当前单元格作为起点,分别计算撇对角线和捺对角线的最大长度,同时确保其对应的正方形区域只有对角线上都为1

比如,对于下图中的单元格[2][3]来说,将其作为起点,捺(乀)对角线(只考虑右下方,不考虑左上方)的最大长度是3,对应的是一个3 * 3的正方形,在正方形区域中只有3个方格为1,且都在对角线上,所以可以获奖,奖品数为3。

图片

而撇(丿)对角线(只考虑左下方,不考虑右上方)的最大长度为2,对应的是一个2 * 2的正方形,但是正方形区域中有3个单元格为1,因此这条对角线不能获奖。

图片

所以,对于撇对角线而言,其最大长度只能是1,如下:

图片

然后取两者中的较大值,因此单元格[2][3]最多可获得的奖品数为3。

看到这里,你是不是已经有点思路了?

沿着一个方向搜索,直到不满足条件为止,这不就是DFS算法吗。

DFS是指深度优先搜索,其核心思想是尽可能地搜索某一个分支,直到这个分支到达最深处时才返回。

还是以单元格grid[2][3]为例,在计算捺对角线上的时候,一直向右下方搜索,直到到达边缘或者单元格是0为止。

图片

当然,还需要考虑一个条件,就是每向右下方走一格,都需要判断由该对角线构成的正方形区域中的1是否都在对角线上,如果满足就继续搜索,否则就返回。

再来看看撇的情况,如图:

图片

同理,只需要向左下方不断搜索即可,如果左下方的单元格不为1,停止搜索,如果到达边缘了,停止搜索,如果所构成的正方形中的1不都在对角线上,停止搜索。

为了方便,我们可以定义两个dfs函数,分别沿着两个方向进行搜索,计算其最大的奖品数量。

在dfs函数中,还需要计算对角线所构成的正方形区域中1的个数,也可以使用自定义函数来计算。

思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

根据上面的思路分析,我们分两步来编写程序:

  • 自定义函数

  • 遍历矩阵计算最大值

1. 自定义函数

根据前面的思路分析,我们需要定义3个函数。

a. 计算并判断正方形区域中1的数量

自定义函数如下:

图片

简单说明4点:

1). grid是输入的二维列表,x和y是指正方形对角线的起点,i和j是正方形对角线的终点;

2). 通过i和x来计算正方形的长度;

3). 对于一个正方形区域而言,要取k行k列数据,计算1的个数,grid本身是一个二维列表,只需要计算列的起点和终点,运用切片运算就可以,但是由于存在撇和捺两条对角线,因此需要计算好列起点start和列终点end的值。

4). k是正方形的长度,如果整个正方形区域1的和等于k,说明满足条件,可以获得奖品,返回True,否则返回false。

b. 捺对角线DFS函数

图片

c. 撇对角线DFS函数

图片

代码基本上差不多,强调两点:

1). 在进行DFS搜索时,有3个条件需要判断,一是越界,二是单元格的值不为0,三是所构成的正方形区域中1都在对角线上;

2). 注意这里x,y和i,j的作用和区别,i和j主要用于dfs搜索,而x和y则在计算正方形区域中1的数量时必不可少。

2 遍历矩阵计算最大值

有了上面的3个函数,接下来就好办了,先获取输入的数据,再遍历二维列表,计算并更新最大奖品数即可,具体代码如下:

图片

代码不多,说明3点:

1). 首先需要获取用户输入的数据,将二维列表数据保存到grid中;

2). 对于每个单元格而言,其起点就是i和j,因此需要使用将它们的值分别赋值给x和y;

3). 对于每个单元格,都存在撇和捺两种情况,取二者中的较大值,并不断更新即可。

至此,整个程序就全部完成了,你可以输入不同的数据来测试效果啦。

四.总结与思考

本题代码在36行左右,涉及到的知识点包括:

  • 循环语句;

  • 条件语句;

  • 二维列表;

  • 自定义函数;

  • DFS算法;

作为本次测评中高级最后一题,本题分值为100分,代码量较多,难度较大。关键点有两个,一是深入理解题目的意思,找到问题的规律和特点,二是通过自定义函数来简化代码。

二维列表是编程中常见的数据结构,对二维列表的遍历是学习编程的基本功,除了最简单的横向遍历和纵向遍历之外,还包括斜线遍历和螺旋遍历等,一定要多加练习,做到灵活运用。

超平老师给你留一道思考题,本题可以使用动态规划来实现吗,如果可以的话,代码该如何编写呢?

你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要源码的,可以移步至“超平的编程课”gzh。

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

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

相关文章

langchain框架轻松实现本地RAG

一 什么是RAG? RAG(Retrieval-Augmented Generation)是一种结合了检索和生成模型的方法,主要用于解决序列到序列的任务,如问答、对话系统、文本摘要等。它的核心思想是通过从大量文档中检索相关信息,然后利用这些信息…

Unity热更方案HybridCLR+YooAsset,纯c#开发热更,保姆级教程,从零开始

文章目录: 一、前言二、创建空工程三、接入HybridCLR四、接入YooAsset五、搭建本地资源服务器Nginx六、实战七、最后 一、前言 unity热更有很多方案,各种lua热更,ILRuntime等,这里介绍的是YooAssetHybridCLR的热更方案&#xff0…

丝滑流畅!使用kimi快速完成论文仿写

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 今天的分享,我们将带大家探索一种新的学术写作技巧——使用Kimi进行论文仿写。本文将深入解析如何利用Kimi的智能辅助功能,提高论文写作的效率和质量&#xff0c…

mac显示隐藏的.git文件

打开终端 输入命令 defaults write com.apple.finder AppleShowAllFiles YES killall Finder

CTF常用sql注入(二)报错注入(普通以及双查询)

0x05 报错注入 适用于页面无正常回显,但是有报错,那么就可以使用报错注入 基础函数 floor() 向下取整函数 返回小于或等于传入参数的最大整数。换句话说,它将数字向下取整到最接近的整数值。 示例: floor(3.7) 返回 3 floor(-2…

适用于 Windows 11/10/8/7/Vista/XP 的最佳免费分区软件

无论您使用的是 SSD、机械磁盘还是任何类型的 RAID 阵列,硬盘驱动器都是 Windows 计算机中不可或缺的组件。在将文件保存到全新磁盘之前,您应该初始化它,创建分区并使用文件系统格式化。在运行计算机一段时间后,您需要收缩、扩展、…

软件性能测试有哪几种测试方法?专业性能测试报告出具

软件性能测试是指对软件系统在特定负载条件下的性能进行评估和验证的过程,目的是确保软件在正常使用的情况下能够满足用户的要求,并在稳定的性能水平下运行,在软件开发过程中起到了至关重要的作用,可以确保软件产品的质量和可靠性…

LTSPICE仿真电路:(十九)磁珠的一些简单仿真

1.作用 简单来说就是用来滤波的,将高频信号转化为热量滤除掉,低频有用信号正常通过 2.参数 上图几个参数比较简单,就是字面上的意思,更重要的就是频率阻抗图 不同曲线代表不同型号的磁珠,实际上除了额定电流外&#…

WEB01MySQL安装和数据库

第一天、WEB课程 web课程主要讲三部分内容 数据库 数据库介绍 什么是数据库 数据存储的仓库,其本质也是一个文件系统 数据库会按照特定的格式对数据进行存储,用户可以对数据库中的数据进行增加,修改,删除及查询操作。 数据库…

航空数据管控系统-②项目分析与设计:任务2:使用Git或SVN管理项目(可选任务,只介绍Git安装)

任务描述 1、安装Git 2、注册GitHub 3、配置本地库 4、配置远程库 5、使用Git管理项目 任务指导 分为以下几个部分完成: 学会Git的安装,帐号注册本地存储库的管理自己创建一个项目,项目名称为自己的名字,上传到代码仓库&#xff…

秋招突击——设计模式补充——单例模式、依赖倒转原则、工厂方法模式

文章目录 引言正文依赖倒转原则工厂方法模式工厂模式的实现简单工厂和工厂方法的对比 抽线工厂模式最基本的数据访问程序使用工厂模式实现数据库的访问使用抽象工厂模式的数据访问程序抽象工厂模式的优点和缺点使用反射抽象工厂的数据访问程序使用反射配置文件实现数据访问程序…

iPad卡在白苹果开不了机怎么办?3种解决办法!

iPad开机卡在白苹果?iPad Air 黑屏重启白苹果?iPad Pro 莫名关机,开机白苹果无法启动?iPad mini 摔落、泡水等,开机一直显示白苹果,iPad出现这些情况怎么办? 无论是使用iPad、iPad Air、iPad P…

WCCI 2024第三弹:忍者表演惊艳全场,盛大晚宴不容错过

WCCI 2024第三弹:忍者表演惊艳全场,盛大晚宴不容错过! 会议之眼 快讯 会议介绍 IEEE WCCI(World Congress on Computational Intelligence)2024,即2024年IEEE世界计算智能大会,于6月30日至7月…

【第17章】MyBatis-Plus自动维护DDL

文章目录 前言一、功能概述二、注意事项三、代码示例四、实战1. 准备2. ddl配置类3. 程序启动4. 效果(数据库) 总结 前言 在MyBatis-Plus的3.5.3版本中,引入了一项强大的功能:数据库DDL(数据定义语言)表结构的自动维护。这一功能…

安全事件响应管理系统好用?10项功能不可或缺

网络安全事件的发生,往往意味着一家企业的生产经营活动将受到重大影响,甚至会面临法律层面的违规处罚。因此,企业必须提前准备好响应网络安全事件的措施,并制定流程清晰、目标明确的事件响应计划。而为了有效提升企业的网络安全事…

企业数据API平台:获取企业多维度信息

数据API平台是指提供一系列预先定义的接口、协议与工具,允许不同应用程序或系统之间进行数据交换和通信的平台。这些接口被称为数据API(Data Application Programming Interface),是数据管理系统或应用程序提供的一组开放式接口。…

【CSAPP】-linklab实验

目录 实验目的与要求 实验原理与内容 实验步骤 实验设备与软件环境 实验过程与结果(可贴图) 实验总结 实验目的与要求 1.了解链接的基本概念和链接过程所要完成的任务。 2.理解ELF目标代码和目标代码文件的基本概念和基本构成 3.了解ELF可重定位目…

Cloudflare 推出一款免费对抗 AI 机器人的可防止抓取数据工具

上市云服务提供商Cloudflare推出了一种新的免费工具,可防止机器人抓取其平台上托管的网站以获取数据以训练AI模型。 一些人工智能供应商,包括谷歌、OpenAI 和苹果,允许网站所有者通过修改他们网站的robots.txt来阻止他们用于数据抓取和模型训…

Movable antenna 早期研究

原英文论文名字Historical Review of Fluid Antenna and Movable Antenna 最近,无线通信研究界对“流体天线”和“可移动天线”两种新兴天线技术的发展引起了极大的关注,这两种技术因其前所未有的灵活性和可重构性而极大地提高了无线应用中的系统性能。…

推荐 2个功能强大的黑科技工具,真的会让你直呼卧槽

Waifu2X Waifu2x 是一个基于深度学习的开源项目,主要用于处理二次元动漫风格的图像。它使用卷积神经网络(CNN)进行超分辨率处理和降噪,能够将图像放大2倍或更多,同时显著提高清晰度和减少噪声。Waifu2x 特别针对日系漫…