2024蓝桥杯每日一题(BFS)
备战2024年蓝桥杯 -- 每日一题
Python大学A组
试题一:母亲的奶牛
试题二:走迷宫
试题三:八数码1
试题四:全球变暖
试题五:八数码2
试题一:母亲的奶牛
【题目描述】
农夫约翰有三个容量分别为 A,B,C 升的挤奶桶。最开始桶 A 和桶 B 都是空的,而桶 C 里装满了牛奶。有时,约翰会将牛奶从一个桶倒到另一个桶中,直到被倒入牛奶的桶满了或者倒出牛奶的桶空了为止。这一过程中间不能有任何停顿,并且不会有任何牛奶的浪费。请你编写一个程序判断,当 A 桶是空的时候,C桶中可能包含多少升牛奶,找出所有的可能情况。
【输入格式】
共一行,包含三个整数 A,B,C。
【输出格式】
共一行,包含若干个整数,表示 C 桶中牛奶存量的所有可能情况,请将这些数字按升序排列。
【数据范围】
1≤A,B,C≤20
【输入样例】
8 9 10
【输出样例】
1 2 8 9 10
【解题思路】
BFS简答模拟一下倒牛奶的过程。
【Python程序代码】
from collections import *
a,b,c = map(int,input().split())
n = 22
st = [[[0 for _ in range(n)] for _ in range(n)] for _ in range(n)]q = deque()
def ins(a_,b_,c_):global qif st[a_][b_][c_]:returnq.append([a_,b_,c_])st[a_][b_][c_]=1
def bfs():q.append([0,0,c])st[0][0][c]=1while q:a_,b_,c_ = q.popleft()ins( a_-min(a_,b-b_) , b_+min(a_,b-b_) , c_ )ins( a_-min(a_,c-c_) , b_ , c_+min(a_,c-c_) )ins( a_+min(b_,a-a_) , b_-min(b_,a-a_) , c_ )ins( a_ , b_-min(b_,c-c_) , c_+min(b_,c-c_) )ins( a_+min(c_,a-a_) , b_ , c_-min(c_,a-a_) )ins( a_ , b_+min(c_,b-b_) , c_-min(c_,b-b_) )
bfs()
for c_ in range(c+1):for b_ in range(b+1):if st[0][b_][c_]:print(c_,end=' ')break
试题二:走迷宫
【题目描述】
给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角 (n,m)处,至少需要移动多少次。数据保证 (1,1) 处和 (n,m) 处的数字为 0,且一定至少存在一条通路。
【输入格式】
第一行包含两个整数 n 和 m。
接下来 n行,每行包含 m 个整数(0 或 1),表示完整的二维数组迷宫。
【输出格式】
输出一个整数,表示从左上角移动至右下角的最少移动次数。
【数据范围】
1≤n,m≤100
【输入样例】
5 5
0 1 0 0 0
0 1 0 1 0
0 0 0 0 0
0 1 1 1 0
0 0 0 1 0
【输出样例】
8
【解题思路】
BFS的典中典。
【Python程序代码】
from collections import *
n,m = map(int,input().split())
mp = [[0]*(m+5)]
for i in range(n):mp.append([0]+list(map(int,input().split())))
dir = [(1,0),(-1,0),(0,1),(0,-1)]
st = [[0]*(m+5) for _ in range(n+5)]
def bfs():q = deque()q.append([1,1,0])st[1][1]=1while q:tx,ty,step = q.popleft()if tx==n and ty==m:print(step)returnfor x_,y_ in dir:nx,ny = tx+x_,ty+y_if nx<1 or nx>n or ny<1 or ny>m:continueif mp[nx][ny]==1 or st[nx][ny]:continueq.append( [nx,ny,step+1] )st[nx][ny]=1
bfs()
试题三:八数码
【题目描述】
在一个 3×3 的网格中,1∼8这 8 个数字和一个 x
恰好不重不漏地分布在这 3×3的网格中。
例如:
1 2 3
x 4 6
7 5 8
在游戏过程中,可以把 x
与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):
1 2 3
4 5 6
7 8 x
例如,示例中图形就可以通过让 x
先后与右、下、右三个方向的数字交换成功得到正确排列。交换过程如下
1 2 3 1 2 3 1 2 3 1 2 3
x 4 6 4 x 6 4 5 6 4 5 6
7 5 8 7 5 8 7 x 8 7 8 x
把 x
与上下左右方向数字交换的行动记录为 u
、d
、l
、r
。现在,给你一个初始网格,请你通过最少的移动次数,得到正确排列。
【输入格式】
输入占一行,将 3×3 的初始网格描绘出来。例如,如果初始网格如下所示:
1 2 3
x 4 6
7 5 8
则输入为:1 2 3 x 4 6 7 5 8
【输出格式】
输出占一行,包含一个整数,表示最少交换次数。
如果不存在解决方案,则输出 −1。
【输入样例】
2 3 4 1 5 x 7 6 8
【输出样例】
19
【解题思路】
简答题,用BFS遍历查找即可。
【Python程序代码】
from collections import *
pd = ['0','1','2','3','4','5','6','7','8','x']
norm = "".join(pd)
dir = [1,-1,3,-3]
s = ['0'] + list(map(str,input().split()))
idx = s.index('x')
mp = defaultdict(int)
def bfs():q = deque()step = 0q.append( [s,idx,step] )ns = "".join(s)mp[ns]=1flag,res = 0,-1while q:ss,sidx,step = q.popleft()if "".join(ss)==norm:res = stepbreakfor i in dir:teps = ss.copy()nidx = sidx + iif nidx<1 or nidx>9:continueif (sidx==3 or sidx==6) and i==1:continueif (sidx==4 or sidx==7) and i==-1:continueteps[sidx],teps[nidx] = teps[nidx], teps[sidx]nteps = "".join(teps)if mp[nteps]:continuemp[nteps]=1q.append( [teps,nidx,step+1] )print(res)
bfs()
试题四:全球变暖
【题目描述】
你有一张某海域 N×N像素的照片,”.”表示海洋、”#”表示陆地,如下所示:
.......
.##....
.##....
....##.
..####.
...###.
.......
其中”上下左右”四个方向上连在一起的一片陆地组成一座岛屿,例如上图就有 22 座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。例如上图中的海域未来会变成如下样子:
.......
.......
.......
.......
....#..
.......
.......
请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。
【输入格式】
第一行包含一个整数N。
以下 N 行 N 列,包含一个由字符”#”和”.”构成的 N×N字符矩阵,代表一张海域照片,”#”表示陆地,”.”表示海洋。
照片保证第 1行、第 1 列、第 N 行、第 N 列的像素都是海洋。
【输出格式】
一个整数表示答案。
【数据范围】
1≤N≤1000
【输入样例】
7
.......
.##....
.##....
....##.
..####.
...###.
.......
【输出样例】
1
【解题思路】
简答题,用BFS找一遍就可以。
【Python程序代码】
from collections import *
n = int(input())
mp,res = [],0
st = [[0]*(n+5) for _ in range(n+5)]
for i in range(n):mp.append(list(input()))
def bfs(x,y):global resq = deque()flag = 0q.append([x,y])st[x][y]=1while q:tx,ty = q.popleft()for a,b in [[1,0],[-1,0],[0,1],[0,-1]]:nx,ny = tx+a,ty+bif nx<0 or nx>=n or ny<0 or ny>=n:continueif mp[nx][ny]=='.' or st[nx][ny]:continuest[nx][ny]=1if mp[nx+1][ny]==mp[nx-1][ny]==mp[nx][ny+1]==mp[nx][ny-1]=='#':flag=1q.append([nx,ny])if flag:res+=1
cnt = 0
for i in range(n):for j in range(n):if mp[i][j]=='#' and st[i][j]==0:cnt +=1bfs(i,j)
print(cnt-res)
试题五:八数码2
【题目描述】
在一个 3×3 的网格中,1∼8这 8 个数字和一个 x
恰好不重不漏地分布在这 3×3的网格中。
例如:
1 2 3
x 4 6
7 5 8
在游戏过程中,可以把 x
与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):
1 2 3
4 5 6
7 8 x
例如,示例中图形就可以通过让 x
先后与右、下、右三个方向的数字交换成功得到正确排列。交换过程如下
1 2 3 1 2 3 1 2 3 1 2 3
x 4 6 4 x 6 4 5 6 4 5 6
7 5 8 7 5 8 7 x 8 7 8 x
把 x
与上下左右方向数字交换的行动记录为 u
、d
、l
、r
。现在,给你一个初始网格,请你通过最少的移动次数,得到正确排列。
【输入格式】
输入占一行,将 3×3 的初始网格描绘出来。例如,如果初始网格如下所示:
1 2 3
x 4 6
7 5 8
则输入为:1 2 3 x 4 6 7 5 8
【输出格式】
输出占一行,包含一个字符串,表示得到正确排列的完整行动记录。
如果答案不唯一,输出任意一种合法方案即可。
如果不存在解决方案,则输出 unsolvable
。
【输入样例】
2 3 4 1 5 x 7 6 8
【输出样例】
ullddrurdllurdruldr
【解题思路】
简答题,在前面八数码1的基础上改一下step就可以了。
【Python程序代码】
from collections import *
pd = ['0','1','2','3','4','5','6','7','8','x']
norm = "".join(pd)
dir = [1,-1,3,-3]
fx = ['r','l','d','u']
s = ['0'] + list(map(str,input().split()))
idx = s.index('x')
mp = defaultdict(int)
def bfs():q = deque()step = ""q.append( [s,idx,step] )ns = "".join(s)mp[ns]=1flag,res = 0,-1while q:ss,sidx,step = q.popleft()if "".join(ss)==norm:flag = 1res = stepbreakfor i in range(4):teps = ss.copy()nidx = sidx + dir[i]if nidx<1 or nidx>9:continueif (sidx==3 or sidx==6) and dir[i]==1:continueif (sidx==4 or sidx==7) and dir[i]==-1:continueteps[sidx],teps[nidx] = teps[nidx], teps[sidx]nteps = "".join(teps)if mp[nteps]:continuemp[nteps]=1q.append( [teps,nidx,step+fx[i]] )if flag:print(res)else:print('unsolvable')
bfs()
相关文章:
2024蓝桥杯每日一题(BFS)
备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一:母亲的奶牛 试题二:走迷宫 试题三:八数码1 试题四:全球变暖 试题五:八数码2 试题一:母亲的奶牛 【题目描述】 农夫约…...
力扣思路题:最长特殊序列1
int findLUSlength(char * a, char * b){int alenstrlen(a),blenstrlen(b);if (strcmp(a,b)0)return -1;return alen>blen?alen:blen; }...
c# 的ref 和out
在C#中,ref和out是用于方法参数的关键字,它们都允许在方法调用中对参数进行修改。 ref关键字用于传递参数的引用。当使用ref关键字声明一个参数时,实际上是在告诉编译器此参数在调用方法之前必须被赋值。ref参数传递的是参数的引用地址&…...
ONLYOFFICE文档8.0全新发布:私有部署、卓越安全的协同办公解决方案
ONLYOFFICE文档8.0全新发布:私有部署、卓越安全的协同办公解决方案 文章目录 ONLYOFFICE文档8.0全新发布:私有部署、卓越安全的协同办公解决方案摘要📑引言 🌟正文📚一、ONLYOFFICE文档概述 📊二、ONLYOFFI…...
Mar 14 | Datawhale 01~04 打卡 | Leetcode面试下
第一阶段主要就是学习字符串的处理和二叉树的遍历。前一段时间学习了二叉树的遍历,记忆还比较深刻,这几个题还是比较轻松的做出来了;但是像Longest Palindromic Substring这样的题除了简单的字符串处理(回文判断)&…...
【计算机网络】什么是http?
目录 前言 1. 什么是HTTP协议? 2. 为什么使用HTTP协议? 3. HTTP协议通信过程 4. 什么是url? 5. HTTP报文 5.1 请求报文 5.2 响应报文 6. HTTP请求方式 7. HTTP头部字段 8. HTTP状态码 9. 连接管理 长连接与短连接 管线化连接…...
【python开发】并发编程(上)
并发编程(上) 一、进程和线程(一)多线程(二)多进程(三)GIL锁 二、多线程开发(一)t.start()(二)t.join()(三)t.…...
用c语言实现扫雷游戏
文章目录 概要整体架构流程代码的实现小结 概要 学习了c语言后,我们可以通过c语言写一些小程序,然后我们这篇文章主要是,扫雷游戏的一步一步游戏。 整体架构流程 扫雷网页版 根据上面网页版的基础扫雷可以看出是一个99的格子,…...
LeetCode 2882.删去重复的行
DataFrame customers ------------------- | Column Name | Type | ------------------- | customer_id | int | | name | object | | email | object | ------------------- 在 DataFrame 中基于 email 列存在一些重复行。 编写一个解决方案,删除这些重复行&#…...
对OceanBase进行 sysbench 压测前,如何用 obdiag巡检
有一些用户想对 OceanBase 进行 sysbench 压测,并向我询问是否需要对数据库的各种参数进行调整。我想起有一个工具 obdiag ,具备对集群进行巡检的功能。因此,我正好借此机会试用一下这个工具。 obdiag 功能的比较丰富,详细情况可参…...
每天学习几道面试题|Kafka架构设计类
文章目录 1. Kafka 是如何保证高可用性和容错性的?2. Kafka 的存储机制是怎样的?它是如何处理大量数据的?3. Kafka 如何处理消费者的消费速率低于生产者的生产速率?4. Kafka 集群中的 Controller 是什么?它的作用是什么…...
.rmallox勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
导言: 近年来,勒索病毒的威胁日益增加,其中一种名为.rmallox的勒索病毒备受关注。这种病毒通过加密文件并勒索赎金来威胁受害者。本文将介绍.rmallox勒索病毒的特点,以及如何恢复被其加密的数据文件,并提供预防措施&a…...
安卓性能优化面试题 11-15
11. 简述APK安装包瘦身方案 ?(1):剔 除掉冗余的代码与不必要的jar包;具体来讲的话,我们可以使用SDK集成的ProGuard混淆工具,它可以在编译时检查并删除未使用的类、字段、方法 和属性,它会遍历所有代码找到无用处的代码,所有那些不可达的代码都会在生成最终apk文件之前被…...
Python错题集-9PermissionError:[Errno 13] (权限错误)
1问题描述 Traceback (most recent call last): File "D:\pycharm\projects\5-《Python数学建模算法与应用》程序和数据\02第2章 Python使用入门\ex2_38_1.py", line 9, in <module> fpd.ExcelWriter(data2_38_3.xlsx) #创建文件对象 File "D:…...
QT TCP通信介绍
QT是一个跨平台的C应用程序开发框架,它提供了一套完整的工具和库,用于开发各种类型的应用程序,包括图形用户界面(GUI)应用程序、命令行工具、网络应用程序等。QT提供了丰富的功能和类来简化网络通信的开发,其中包括TCP通信。 TCP…...
保姆级教学!微信小程序设计全攻略!
微信小程序开启了互联网软件的新使用模式。在各种微信小程序争相抢占流量的同时,如何设计微信小程序?让用户感到舒适是设计师在产品设计初期应该考虑的问题。那么如何做好微信小程序的设计呢?即时设计总结了以下设计指南,希望对准…...
日期差值的计算
1、枚举所有数值进行日期判断 时间复杂度是o(n)的,比较慢,单实例能凑合用,多实例的话时间复杂度有点高。 核心代码就是判断某个八位数能否表示一个日期。 static int[] month {0,31,28,31,30,31,30,31,31,30,31,30,31};static String a, b…...
为什么需要Occupancy?
1.能够得到3D的占用信息 在基于BEV (鸟瞰图) 的2D预测模型中,我们通常仅具有二维平面(x和y坐标)上的信息。这种方法对于很多应用场景来说已经足够,但它并不考虑物体在垂直方向(z轴)上的分布。这限制了模型的…...
SSA优化最近邻分类预测(matlab代码)
SSA-最近邻分类预测matlab代码 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法,在2020年提出,主要是受麻雀的觅食行为和反捕食行为的启发。 数据为Excel分类数据集数据。 数据集划分为训练集、验证集、测试集,比例为8&#…...
nginx相关内容的安装
nginx的安装 安装依赖 yum install gcc gcc-c automake autoconf libtool make gd gd-devel libxslt-devel -y 安装lua与lua依赖 lua安装步骤如下: mkdir /www mkdir /www/server #选择你自己的目录即可,不需要跟我一致 cd /www/server tar -zxvf lua-5.4.3.tar.gz cd lua-5.4…...
基于SpringBoot和Echarts的全国地震可视化分析实战
目录 前言 一、后台数据服务设计 1、数据库查询 2、模型层对象设计 3、业务层和控制层设计 二、Echarts前端配置 1、地图的展示 2、次数排名统计 三、最终结果展示 1、地图展示 2、图表展示 总结 前言 在之前的博客中基于SpringBoot和PotsGIS的各省地震震发可视化分…...
基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的农作物害虫检测系统(深度学习模型+UI界面+训练数据集)
摘要:开发农作物害虫检测系统对于提高农业生产效率和作物产量具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个农作物害虫检测系统,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并对比了YOLOv7、YOLOv6、YOLOv5࿰…...
21 # 高级类型:条件类型
条件类型(Conditional Types)是一种高级的类型工具,它允许我们基于一个类型关系来选择另一个类型。条件类型通常使用条件表达式 T extends U ? X : Y 的形式,其中根据泛型类型 T 是否可以赋值给类型 U 来确定最终的类型是 X 还是…...
Java之List.steam().sorted(Comparator.comparing())排序异常解决方案
使用steam().sorted(Comparator.comparing())对List<T>集合里的String类型字段进行倒序排序,发现倒序失效。记录解决方案。 异常代码如下: customerVOList customerVOList.stream().sorted(Comparator.comparing(CustomerVOVO::getCustomerRate).reversed()…...
js判断对象是否有某个属性
前端判断后端接口是否返回某个字段的时候 <script>var obj { name: "John", age: 30 };console.log(obj.hasOwnProperty("name")); // 输出 trueconsole.log(obj.hasOwnProperty("email")); // 输出 falselet obj11 { name: "Joh…...
CleanMyMac X2024永久免费的强大的Mac清理工具
作为产品功能介绍专员,很高兴向您详细介绍CleanMyMac X这款强大的Mac清理工具。CleanMyMac X具有广泛的清理能力,支持多种文件类型的清理,让您的Mac始终保持最佳状态。 系统垃圾 CleanMyMac X能够深入系统内部,智能识别并清理各种…...
等保测评的知识
结合自己所学的知识和网络上的一些知识做个小总结。 目录 一、概念: 二、等级划分: 三、技术要求: 四、管理要求: 五、等保测评实施过程: 六、典型的网络架构: 一、概念: 全称为信息安全等级保…...
【算法】多路归并(鱼塘钓鱼)
有 N 个鱼塘排成一排,每个鱼塘中有一定数量的鱼,例如:N5 时,如下表: 鱼塘编号12345第1分钟能钓到的鱼的数量(1..1000)101420169每钓鱼1分钟钓鱼数的减少量(1..100)24653当前鱼塘到下…...
unity3d Animal Controller的Animal组件中General基础部分理解
控制器介绍 动物脚本负责控制动物的所有运动逻辑.它管理所有的动画师和刚体参数,以及所有的状态和模式,动物可以做。 动物控制器 是一个动画框架控制器,根动或到位,为任何生物或人形。它利用刚体与物理世界的互动和动画师的玩动画。 States States 是不互相重叠的动画。例如…...
css背景从上到下颜色渐变、css背景从左到右颜色渐变、 css框线展示外阴影、css框线展示内阴影
1. css背景从上到下颜色渐变 body {background: linear-gradient(to bottom, #ff0000, #ffff00); /* 这里的#ff0000表示红色,#ffff00表示黄色 */ }2. css背景从左到右颜色渐变 要实现CSS背景从左到右的颜色渐变,可以使用linear-gradient函数。以下是一…...
柠檬网络科技网站建设/百度优化大师
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:段石石 前言 前段时间,因为项目需求, 开始接触了NLP,有感自己不是科班出身,很多东西理解不深,于是花时间再读了一些NLP的经典教程的部分章节…...
比特币网站做任务/网络推广平台网站推广
天津为退海之地,意思就是海面下降或者陆地上升形成的地理环境,现在塘沽、汉沽还有盐场,就在一定程度上说明了这一点。因此天津地势低洼,沽坑相连,素有七十二沽之说,所以天津的地名带“沽”字的也特别多&…...
北京专业网站开发/百度com百度一下你
2019独角兽企业重金招聘Python工程师标准>>> Swagger自定义模板 下载Swagger codegen <dependency><groupId>io.swagger</groupId><artifactId>swagger-codegen-cli</artifactId><version>2.2.1</version> </dependen…...
网站建设分金手指专业十三/北京搜索优化推广公司
文章目录前言特别声明Base64 的编码和解码不是加密算法关门,上代码参考链接前言 体能状态先于精神状态,习惯先于决心,聚焦先于喜好 特别声明 本文 列举了 Java 环境下Base64的几种实现方式 ,有几点需要特别声明: 1、部分方法需要下载单独的 jar 包,本文提供了 Maven 依赖地址,可…...
大兴高米店网站建设/360线上推广
Java是一门面向对象的编程语言。在语言层面上,创建对象通常仅仅是一个new关键字而已,最近在读《深入理解java虚拟机》,这篇文章回顾一下书中所讲的关于普通java对象在虚拟机中的创建过程。 虚拟机在遇到一条new指令时,首先将去检…...
哪个网站可以做练习题/网站推广服务报价表
新的知识产权(IP)将加速产品面市时间并降低开发周期风险 2017年1月10日 — 推动高能效创新的安森美半导体(ON Semiconductor,美国纳斯达克上市代号:ON),宣布与Hexius半导体合作,从而使其部分模拟知识产权(IP)能用于受欢迎的ONC18 …...