当前位置: 首页 > news >正文

python 基础知识点(蓝桥杯python科目个人复习计划58)

今日复习内容:做题

例题1:仙境诅咒

问题描述:

在一片神秘的仙境中,有N位修仙者,他们各自在仙境中独立修炼,拥有他们独特的修炼之地和修炼之道,修炼者们彼此之间相互尊重,和平相处。

然而,有一天,仙境的主宰者妮妮(第一位修仙者)收到了诅咒,该诅咒会向距离妮妮不超过D的范围内范围内的修仙者传播。也就是说,如果一个修仙者被诅咒,那么在距他不超过D的范围内的修仙者都会收到诅咒。

现在,你需要预测哪些修仙者最终会被诅咒,以便及时采取措施,保护仙境的和平与安宁。

输入格式:

第一行输入一个正整数N(1 <= N <= 10^3),表示仙境中有N位修仙者。

接下来N行,每行两个实数Xi和Yi(-10^3 <= Xi,Yi <= 10^3),表示第i位修仙者的坐标(Xi,Yi),第一位修仙者即仙境的主宰者妮妮。

最后一行输入一个整数D(1 <= D <= 10^3),表示诅咒传播的范围。

输出格式:

输出N行,每行一个整数,第i行整数为1表示第i位修仙者最终被诅咒,若为0则没有被诅咒。

参考答案:

def dis(x1,y1,x2,y2):return (x1 - x2) ** 2 + (y1 - y2) ** 2 <= D ** 2
def dfs(x,y):for i in range(n):if not vis[i] and dis(x,y,wh[i][0],wh[i][1]):vis[i] = Truedfs(wh[i][0],wh[i][1])n = int(input())
wh = [list(map(int,input().split())) for i in range(n)]
D = int(input())
vis = [False] * n
vis[0] = True
dfs(wh[0][0],wh[0][1])
for i in vis:print(int(i))

运行结果:

以下是我对此题的理解:

用深度优先搜索,首先定义一个函数dis用来判断两个修仙者之间的距离是否超过D,然后再定义一个函数dfs,用来递归地搜索收到诅咒的修仙者。接着读取输入,初始化修仙者的坐标和诅咒的范围。然后标记仙境的主宰者妮妮已经收到诅咒,从主宰者的位置开始进行dfs搜索,将与主宰者的距离小于等于D的修仙者标记为收到诅咒,最后输出每个修仙者是否收到诅咒的标记。

整体思路就是从主宰者妮妮开始,逐个遍历与其距离小于等于D的修仙者,并将其标记为收到诅咒。

dfs(x1,y1,x2,y2):

return (x1 - x2) ** 2 + (y1 - y2) ** 2 <= D ** 2

这是一个函数dis,用于计算两个修仙者之间的距离是否小于等于给定范围D的平方。通过欧氏距离的平方来比较两个修仙者之间的距离与给定距离之间的大小关系,以避免使用开方运算,提高效率。

def dfs(x,y):

定义一个函数

for i in range(n):这个循环遍历所有的修仙者,其中n是修仙者的总数

if not vis[i] and dis(x,y,wh[i][0],wh[i][1]):这个条件判断语句检查当前遍历到的修仙者是否未被访问和且与当前正在搜索的点的距离小于等于D,如果满足这两个条件,

vis[i] = True

将满足条件的修仙者标记为已收到诅咒。

dfs(wh[i][0],wh[i][1]):递归地调用dfs函数,以当前修仙者的坐标(wh[i][0],wh[i][1])为新的起点,继续进行深度搜索,寻找与该修仙者距离小于等于D的其他修仙者。

n = int(input())

wh = [list(map(int,input().split())) for i in range(n)]

D = int(input())

vis = [False] * n

vis[0] = True

dfs(wh[i][0],wh[i][1])

这部分代码用于读入和初始化。首先读取输入的修仙者数量n,然后依次读入每个修仙者的坐标和诅咒的范围,然后初始化一个布尔数组vis,用于标记修仙者是否收到诅咒。初始时,仙境的主宰者妮妮被标记为已收到诅咒,,即vis[] = True,然后从主宰者妮妮的位置开始调用dfs函数进行DFS搜索。

for i in vis:

print(int(i))

输出每个修仙者是否收到诅咒的标记,即输出布尔数组vis中的各个元素。


例题2:小怂爱水洼

问题描述:

小怂喜欢收集水洼里的水,他每到一个水量不为0的水洼中就会收集里面所有的水。

小怂去到了一个大小为N * M的水洼,水洼上的每一个小水洼水量为ai,j(i属于[1,n],j属于[1,m]),假设小怂的起点是(1,1),他可以移动无数次,每次移动只能移动到当前水洼上下左右四个方向的相邻小水洼上,并且需要满足相邻小水洼的水量大于0,即如果新的小水洼量为0,小怂就不能走到这个小水洼上。特别地,小怂可以重复走到某块小水洼,但是小水洼中的水只能被收集一次,如果起始点的水洼有水,他会收集那些水。

值得注意的是,每块上下左右相邻且水量不为0的小水洼可以汇集成一个大水洼,小怂每到一个新的大水洼,他之前收集到的水量会变为0。

求解小怂在大水洼中可以收集到的最大水量。

输入格式:

第一行是两个整数N和M,分别表示行数和列数。

接下来N行,每行包括M个整数,每个整数表示当前位置的小水洼的水量。

数据范围保证:1 <= N,M <= 100,1 <= ai,j <= 10^6(数据不保证起始点不为0)

输出格式:

输出共一行,一个整数,表示小怂在水洼中可以收集到的最大水量。

参考答案:

import sys
sys.setrecursionlimit(1000000)
inds = [[1,0],[-1,0],[0,1],[0,-1]]
def dfs(x,y):vis[x][y] = Trueans = water[x][y]for ind in inds:cur_x = x + ind[0]cur_y = y + ind[1]if n > cur_x >= 0 and m > cur_y >= 0 and not vis[cur_x][cur_y] and water[cur_x][cur_y] != 0:ans += dfs(cur_x,cur_y)return ans
n,m = map(int,input().split())
water = [list(map(int,input().split())) for i in range(n)]
vis = [[False] * m for i in range(n)]
ans = 0
for i in range(n):for j in range(m):if not vis[i][j] and water[i][j] != 0:ans = max(ans,dfs(i,j))
print(ans)

运行结果:

以下是我对此题的理解:

对于这道题,我的思路是:

1.导入模块和设置递归深度限制

导入sys 模块,并设置递归深度限制

2.定义移动方向和dfs函数

定义了一个列表,用来记录小怂可以走的4个方向:上下左右

定义了深度优先搜索函数dfs,用来从当前水洼的位置(x,y)开始递归地搜索可以收集水的水洼,并返回小怂在该大水洼中能收集到的水量。

3.初始化水洼信息和访问标记

读取输入大小为N * M 的水洼,其中每个小水洼的水量用二维列表water表示,并初始化一个二维布尔数组vis用于标记该水洼是否被访问过。

4.dfs搜索和计算最大水量

使用两层循环来遍历所有水洼;

对于某个未被访问且水量不为0的水洼,调用dfs函数进行搜索,并更新最大水量。

在dfs函数中,首先标记当前水洼为已访问,并初始化当前水洼的水量为最大水量。然后,依次尝试向4个方向移动,并递归地计算可以收集到的水量。最后返回当前水洼可以收集到的水量。

在移动过程中,如果移动到一个新的大水洼,则当前收集到的水量变为0,因为小怂已经收集过当前水洼的水了。

5.输出结果


例题3:串变换

问题描述:

有两个长度为n的数字字符串S和T,下标从0开始。

一共有k个操作,操作只可能是一下两种类型:

  • 1 x y 表示将Sx变为(Sx + v) mod 10;
  • 2 x y 表示交换Sx,Sy

你可以挑选出任意个操作,以任意顺序执行,但是每个操作只能最多执行一次 ,如果可以将S串变为T串则输出Yes,否则输出No。

输入格式:

第一行输入一个正整数n,用于表示S和T的长度;

第二行输入一个只由数字组成,长度为n的字符串S;

第三行输入一个只由数字组成,长度为n的字符串T;

第四行输入一个正整数k,表示操作次数。

接下来k行,每行3个整数,其中第i行表示第i种操作的3个参数:opi,xi,yi。

输出格式:

一行一个字符串:

如果可以通过操作使得S串等于T串,则输出Yes,否则输出No。

参考答案:

flag = False
def check(path):global flagstr_ = list(map(int,list(s)))for i in path:if ops[i][0] == 1:str_[ops[i][1]] += ops[i][2]str_[ops[i][1]] %= 10else:str_[ops[i][1]],str_[ops[i][2]] = str_[ops[i][2]],str_[ops[i][1]]if ''.join(list(map(str,str_))) == t:flag = Truedef dfs(depth):if flag:returnif depth >= k:check(path)returnfor i in range(k):if not vis[i]:vis[i] = Truepath.append(i)dfs(depth + 1)vis[i] = Falsepath.pop()dfs(k)n = int(input())
s = input()
t = input()
k = int(input())
ops = [list(map(int,input().split())) for i in range(k)]
path = []
vis = [False] * k
dfs(0)
if flag:print('Yes')
else:print('No')

运行结果:


OK,这几个题有点难,所以我就只写这些,下一篇继续!

相关文章:

python 基础知识点(蓝桥杯python科目个人复习计划58)

今日复习内容&#xff1a;做题 例题1&#xff1a;仙境诅咒 问题描述&#xff1a; 在一片神秘的仙境中&#xff0c;有N位修仙者&#xff0c;他们各自在仙境中独立修炼&#xff0c;拥有他们独特的修炼之地和修炼之道&#xff0c;修炼者们彼此之间相互尊重&#xff0c;和平相处…...

【基于React实现共享单车管理系统】—React基础知识巩固(二)

【基于React实现共享单车管理系统】—React基础知识巩固&#xff08;二&#xff09; 一、React介绍 Facebook开源的一个JavaScript库React结合生态构成的一个MV*库 React的特点 Declarative&#xff08;声明式编码&#xff09;Component-Based&#xff08;组件化编码&#…...

云桥通+跨境电商:SDWAN企业组网优化跨境网络案例

跨境电商企业在全球范围内展开业务&#xff0c;需构建稳定高效的网络架构以支持其电商平台运营。云桥通SDWAN企业组网技术为跨境电商提供网络连接和管理的优化&#xff0c;提升网络性能、可靠性和安全性。以下是一家跨境电商企业的SDWAN组网案例&#xff0c;详细介绍其实施情况…...

服务器有几种http强制跳转https设置方法

目前为站点安装SSL证书开启https加密访问已经是件很简单的事了&#xff0c;主要是免费SSL证书的普及&#xff0c;为大家提供了很好的基础。 Apache环境下如何http强制跳转https访问。Nginx环境下一般是通过修改“你的域名.conf”文件来实现的。 而Apache环境下通过修改.htacces…...

web坦克大战小游戏

H5小游戏源码、JS开发网页小游戏开源源码大合集。无需运行环境,解压后浏览器直接打开。有需要的订阅后,私信本人,发源码,含60+小游戏源码。如五子棋、象棋、植物大战僵尸、贪吃蛇、飞机大战、坦克大战、开心消消乐、扑鱼达人、扫雷、打地鼠、斗地主等等。 <!DOCTYPE htm…...

如何使用生成式人工智能探索视频博客的魅力?

视频博客&#xff0c;尤其是关于旅游的视频博客&#xff0c;为观众提供了一种全新的探索世界的方式。通过图像和声音的结合&#xff0c;观众可以身临其境地体验到旅行的乐趣和发现的喜悦。而对于内容创作者来说&#xff0c;旅游视频博客不仅能分享他们的旅行故事&#xff0c;还…...

gpt批量工具,gpt批量生成文章工具

GPT批量工具在今天的数字化时代扮演着越来越重要的角色&#xff0c;它们通过人工智能技术&#xff0c;可以自动批量生成各种类型的文章&#xff0c;为用户提供了便利和效率。本文将介绍5款不同的GPT批量工具&#xff0c;并介绍一款知名的147GPT生成工具&#xff0c;以及另外一款…...

Python知识汇总

重要链接&#xff1a; matplotlib库&#xff1a;matplotlib — Matplotlib 3.5.1 documentation DataFrame库&#xff1a;DataFrame — pandas 2.2.1 documentation (pydata.org) Python Matplotlib 实现散点图、曲线图、箱状图、柱状图示例&#xff1a;Python Matplotlib 实…...

WEB面试题

1.基础 Web 技术&#xff1a; 1.1 h5 行内元素和块级元素 行内元素不会独占一行&#xff0c;高度和宽度由内容决定&#xff0c;不能单独设置宽高&#xff0c; 不能设置上下的margin和padding&#xff0c;只能设置左右的margin和padding&#xff1b; …...

Android Studio 六大基本布局详解

Android应用开发中&#xff0c;布局是至关重要的一部分&#xff0c;而Android Studio作为主流的开发工具&#xff0c;提供了多种布局方式来灵活适应不同的界面需求。在本文中&#xff0c;我们将深入探讨Android Studio中的六大基本布局&#xff0c;旨在帮助开发者更好地理解和运…...

如何应对IT服务交付中的问题?

如何应对IT服务交付中的问题&#xff1f; 按需交付服务的挑战IT服务体系的复杂性恶性循环的形成学会洞察的重要性书籍简介参与方式 按需交付服务的挑战 一致性、可靠性、安全性、隐私性和成本效益的平衡&#xff1a;成功的按需交付服务需要满足这些要求&#xff0c;这需要服务…...

[Python] 缓存实用工具

cachetools 是一个 Python 库&#xff0c;提供了用于缓存的实用工具&#xff0c;包括各种缓存算法和数据结构&#xff0c;如 LRU&#xff08;最近最少使用&#xff09;缓存、TTL&#xff08;时间到期&#xff09;缓存等。使用 cachetools 可以轻松地在 Python 应用程序中实现缓…...

php反序列化字符逃逸

php反序列化和序列化 PHP序列化&#xff1a;serialize() 序列化是将变量或对象转换成字符串的过程&#xff0c;用于存储或传递 PHP 的值的过程中&#xff0c;同时不丢失其类型和结构。“序列化”是一种把对象的状态转化成字节流的机制 类似于这样的结构&#xff1a; O:4:&quo…...

延迟加载(Lazy Initialization)的单例模式

延迟加载&#xff08;Lazy Initialization&#xff09;的单例模式是一种在对象第一次被请求时才创建单例实例的设计模式。这种方法可以减少程序启动时的负载和启动时间&#xff0c;特别是当单例对象的创建开销较大或者在启动时不一定需要该对象时。 下面是实现延迟加载单例模式…...

C++三级专项 流感传染

时间限制&#xff1a;1000 内存限制&#xff1a;65536 有一批易感人群住在网格状的宿舍区内&#xff0c;宿舍区为n*n的矩阵&#xff0c;每个格点为一个房间&#xff0c;房间里可能住人&#xff0c;也可能空着。在第一天&#xff0c;有些房间里的人得了流感&#xff0c;以后每…...

如何用Elementor创建WordPress会员网站

在下面的文章中&#xff0c;我们将向您展示如何使用Elementor和MemberPress在WordPress中轻松构建会员网站。这篇文章将涵盖WordPress会员网站设置过程、会员资格和受保护内容创建、重要页面和登录表单设计、电子邮件通知管理、报告等。 目录 什么是WordPress会员网站&#x…...

【脑切片图像分割】MATLAB 图像处理 源码

1. 简单图像处理 加载图像 Brain.jpg&#xff0c;使用直方图和颜色分割成区域这些区域有不同的颜色。 这是一个更高级的问题&#xff0c;有多个解决它的方法。 例如&#xff0c;您可以计算具有特定数字的图像的直方图&#xff08;例如 16 - 32&#xff09;&#xff0c;找到直方…...

深度学习系列61:在CPU上运行大模型

1. 快速版 1.1 llamafile https://github.com/Mozilla-Ocho/llamafile 直接下载就可以用&#xff0c;链接为&#xff1a;https://huggingface.co/jartine/llava-v1.5-7B-GGUF/resolve/main/llava-v1.5-7b-q4.llamafile?downloadtrue 启动&#xff1a;./llava-v1.5-7b-q4.lla…...

IO接口 2月5日学习笔记

1.fgetc 用于从文件中读取一个字符&#xff0c;fgetc 函数每次调用将会返回当前文件指针所指向的字符&#xff0c;并将文件指针指向下一个字符。 int fgetc(FILE *stream); 功能: 从流中读取下一个字符 参数: stream:文件流指针 返回值: …...

Android Studio开发(一) 构建项目

1、项目创建测试 1.1 前言 Android Studio 是由 Google 推出的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门用于开发 Android 应用程序。 基于 IntelliJ IDEA: Android Studio 是基于 JetBrains 的 IntelliJ IDEA 开发的&#xff0c;提供了丰富的功能和插件…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...