PAT - BFS

【主题建模】一种基于深度学习的主题建模方法:BERTopic(实战篇) BERTopic 是基于深度学习的一种主题建模方法。2018 年底,Devlin et al. 提出了 Bidirectional Encoder Representations from Transformers (BERT)。BERT 是一种用于 NLP 的预训练策略,它成功地利用了句子的深层语义信息。 阅读详情

例题1,给出一个m*n的矩阵,矩阵中的元素为0或1,称位置x与其上下左右四个位置是相邻的。若有若干个1相邻,成这些1构成了一个块。例如如下的矩阵中

输入样例:

    6 7
    0 1 1 1 0 0 1
    0 0 1 0 0 0 0
    0 0 0 0 1 0 0
    0 0 0 1 1 1 0 
    1 1 1 0 1 0 0
    1 1 1 1 0 0 0

输出:

4

思路:当发现某一个1满足要求之后(未访问过),使用BFS遍历其周围所有的1,更新qu数组,防止重复访问。

BFS遍历的模板

首先将队首元素push进队列

while(队列不为空){

取出队首元素;

队首元素出队;

遍历其周围节点{

if(满足要求){

               入队;

               设置为已入队;

                       }

                  }

             }

#include<cstdio>
#include<queue>
using namespace std;

const int maxn = 100;
int matrix[maxn][maxn] = { false };
int qu[maxn][maxn] = { false };//false代表没入过队
int m, n;//函数中需要用到的变量都定义在外面
int X[4] = {0, 1, 0, -1};
int Y[4] = {1, 0, -1, 0};

struct node {
	int x, y;
}Node;//定义了一个node类型的节点Node

bool judge(int x, int y) {//判断该点是否是符合的点
	//越界
	if (x < 0 || x >= n || y < 0 || y >= n)
		return false;
	//是0或者访问过
	if (matrix[x][y] == 0 || qu[x][y] == 1)
		return false;
	return true;
}

void BFS(int x, int y) {//BFS遍历,扫描周围,将附近的1全部置1
	queue<node> Q;
	qu[x][y] = 1;
	Node.x = x, Node.y = y;
	Q.push(Node);
	while (!Q.empty()) {
		struct node top = Q.front();
		Q.pop();
		for (int i = 0; i < 4; i++) {
			int newX = top.x + X[i];//注意大写
			int newY = top.y + Y[i];
			if (judge(newX, newY)) {
				Node.x = newX, Node.y = newY;
				Q.push(Node);
				qu[newX][newY] = 1;
			}
		}
	}
	

}

int main() {
	/*
	6 7
	0 1 1 1 0 0 1
	0 0 1 0 0 0 0
	0 0 0 0 1 0 0
	0 0 0 1 1 1 0
	1 1 1 0 1 0 0
	1 1 1 1 0 0 0
	*/
	scanf("%d%d", &m, &n);
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			scanf("%d", &matrix[i][j]);
		}
	}
	int ans = 0;
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			if (judge(i, j))
			{
				ans++;
				BFS(i, j);
			}
		}
	}
	printf("%d\n", ans);

	return 0;
}

例题2,有一个n*m大小的迷宫,*代表墙壁,"."代表平地,S代表起点,T代表终点。求从起点S到达终点T的最少步数。

输入样例:

5 5
    .....
    .*.*.
    .*S*.
    .***.
    ...T*
    2 2 4 3

输出样例:

11

注意点:

1. inq数组,防止重复访问。

2.struct node{}结构体中添加一个layer属性,记录每个节点的层数。

3.由于换行符‘\n’的存在,读入字符要先getchar(),但是有一个疑问,为什么是在前面getchar,不应该是在后面gerchar吗?

#include<cstdio>
#include<queue>
using namespace std;

const int maxn = 100;

int n, m;
char matrix[maxn][maxn];
int X[4] = {0, 1, 0, -1};
int Y[4] = { -1, 0, 1, 0 };
int step = 0;
int inq[maxn][maxn] = { false };//avoid repeat visit
struct node {
	int x, y;
	int layer;
}S, T, Node;

bool judge(int x, int y) {//对点进行check
	if (matrix[x][y] == '*' || inq[x][y] == 1)
		return false;
	if (x < 0 || x >= n || y < 0 || y >= n)
		return false;
	return true;
}

int BFS() {
	queue<node> Q;
	Q.push(S);
	while (!Q.empty()) {
		node top = Q.front();
		Q.pop();
		for (int i = 0; i < 4; i++) {
			int newX = top.x + X[i];
			int newY = top.y + Y[i];
			if (matrix[newX][newY] == 'T')
				return top.layer + 1;
			if (judge(newX, newY))
			{
				Node.x = newX, Node.y = newY;
				Node.layer = top.layer + 1;
				Q.push(Node);
				inq[newX][newY] = 1;
			}
		}

	}
	return -1;
}

int main() {
	/*
	5 5
	.....
	.*.*.
	.*S*.
	.***.
	...T*
	2 2 4 3
	*/
	scanf("%d%d", &n, &m);
	for (int i = 0; i < n; i++) {
		getchar();
		for (int j = 0; j < m; j++) {
			matrix[i][j] = getchar();
		}
		
	}
	scanf("%d%d%d%d", &S.x, &S.y, &T.x, &T.y);
	S.layer = 0;
	int step = BFS();

	printf("%d", step);

	return 0;
}

 

农作物生长模型:数学建模与实战案例 在本篇博客中,我们介绍了农作物生长模型的基本原理,并结合Matlab代码和实战案例,演示了如何应用数学建模技术进行农作物生长模型的研究与应用。农作物生长模型在农业领域具有重要意义,希望本篇博客能帮助读者更好地理解农作物生长模型的原理和应用,并在实际农业生产中取得更好的效果。 阅读详情

相关推荐

GD32F4系列Keil工程模板搭建全攻略(手把手教学版)

本文提供了一份详细的GD32F4系列Keil工程模板搭建指南。从软件安装、固件库获取、目录规划,到Keil工程创建、文件添加、关键配置(如编译器选项、头文件路径、时钟设置),再到代码定制与常见问题排查,手把手教你构建一个标准化、模块化的开发基础。文章重点介绍了如何利用官方固件库和代码模板,快速建立稳定高效的开发环境,适用于GD32F407等Cortex-M4内核芯片的入门与项目开发。

weixin_29159995的博客 429

PAT甲级 DFS BFS总结

树的遍历 1090 Highest Price in Supply Chain (25 分) #include<bits/stdc++.h> using namespace std; int depth[100000];//结点的深度 vector<int> v[100000];//存放树 int root; void dfs(int father) { for(int each:v[father]){ depth[each]=depth[father]+1

孜蓝的博客 290

中国高精度年度平均气温栅格数据集(1901-2024)

本文基于中国月度平均气温栅格数据集,计算生成1901-2024年1km分辨率的年度平均气温数据集,并按中国省市行政区划进行裁剪。该数据集融合CRU全球数据和WorldClim高分辨率数据,经496个站点验证,具有高时空精度和长时间序列特点,覆盖全国(含港澳台)逾百年气温记录,为气候变化研究、生态水文分析及农业生产评估等提供重要数据支撑。数据格式为Tif,单位为0.1℃,可获取全国、各省及各市三个尺度的气温栅格数据。

PPdata_Academy的博客 1244

PAT 1094 树的BFS

题目 给定一棵树,求节点最多的一层的层号和节点个数,根节点为第一层 代码及思路 任意树,所以用动态数组来建树,这样遍历的时候也很方便 主要代码部分就是BFS,因为STL队列中提供了 size 函数,这样我们就可以很好的区分队列中的结点是不是一层的,而且也保证了可以每次只 pop 出本层结点的代号 记录 level 可以在每次对当前所有的结点 pop 后,进行level++的操作 对于最大层,只需要每次对比一下 maxsize 和当前的队列大小即可 #include<cstdio> #incl

qq_44910084的博客 246

什么是PON(无源光纤网络)、PON的发展及演进

全球知名媒体Omdia在光纤和铜缆接入设备预测报告中对2022年2月的预测显示,PON设备端口收入预计在2020年至2027年期间以12.3%的年复合增长率增长,到2027年将达到163亿美元,远高于2020年的82亿美元。 此前,Omdia有份报告称,在3月份举行的美国OFC展会中,众多 CSP 正在顺利部署 XGS PON(10G 对称),其他 CSP 专注于基于 GPON 的低速 FTTH 服务。另外关于25G PON 和 50G PON 之间的争论仍在继续,而Omdia 认为 25G PON 和 5

4931

电脑卸载神器Revo Uninstaller Pro,彻底清残留,终身无限制使用

打开软件后,它会自动扫描并列出电脑里所有已安装的程序,小到各种插件、大到专业设计软件和驱动程序,哪怕是隐藏的系统组件,都能给你扒出来,还会自动分类整理,加上搜索功能能快速定位目标软件,就算是电脑小白,也能轻松上手。卸载彻底无残留:能直接代替系统自带的 “添加 / 删除程序”,不光能正常卸载软件,还会通过内置卸载程序配合残留扫描,把软件留下的残留文件、垃圾还有注册表项都扫得明明白白,扫描强度有三档可以选,想清理得多干净都能自己定,删除之后电脑立马清爽不少。电脑用久了是不是越来越慢?

qq_75153390的博客 1752

PAT练习笔记——8.2 广度优先搜索(BFS)

2019年9月PAT - 练习笔记——8.2 以下页码标注的是阅读器中实际页码,而不是书本身自印的页码。 第8章 提高篇(2)——搜索专题 8.2 广度优先搜索(BFS) 目录 A1091 Acute Stoke A1091 Acute Stoke One important factor to identify acute stroke (急性脑卒中) is the volume of...

qreamly的博客 375

计算机视觉——SIFT特征匹配

文章目录一、SIFT特征检测原理1.1基本思想1.2二、SIFT特征检测图片兴趣点三、SIFT特征检测描述子匹配四、输入图片检测与之 一、SIFT特征检测原理 1.1基本思想 1.2 二、SIFT特征检测图片兴趣点 代码: 检测结果: 三、SIFT特征检测描述子匹配 四、输入图片检测与之 ...

weixin_43869874的博客 3855

PAT 列出连通集(dfs+bfs)

题目: 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。 输入格式: 输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。 输出格式: 按照"{ v1v2… vk }"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。 输入样例: 8 6 0 7 0 1 2 0 4 1 2

Aaron_Yang 994

宇树G1二次开发资料汇总

宇树科技G1是一款29自由度的商业级人形机器人,配备NVIDIA Jetson Orin NX计算平台和完整SDK生态。本文系统介绍了G1的硬件架构、29个关节配置、传感器外设、双计算单元设计等关键信息,并详细解析了软件生态体系,包括C++/Python SDK、ROS2接口、仿真工具和AI框架。开发者可通过DDS通信实现高层运动控制或底层关节级精确控制,支持快速二次开发。文档提供了网络配置、接口调用示例等实用指南,帮助开发者高效利用该平台进行人形机器人应用开发。

m0_47999117的博客 1323

036、算子映射:如何将ONNX算子映射到NPU硬件指令?

《算子映射:ONNX到NPU的转换艺术》 本文深入探讨了将ONNX算子映射到NPU硬件指令的技术挑战与实践经验。作者通过真实案例揭示了映射过程中的常见陷阱,如Reshape算子被错误映射导致分类错误。文章详细分析了三种映射策略(直接映射、拆分映射和融合映射),并强调映射表在编译器中的核心作用。特别针对动态形状、精度对齐等难题提供了解决方案,分享了编写映射表时的实用铁律,包括先优化后映射、严格单元测试等。最后指出,成功的算子映射需要在数学语义、硬件约束和性能优化之间找到精确平衡,这种看似枯燥的工作实则决定着N

m0_50546716的博客 192

pat 甲级 1090(bfs遍历)

题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805376476626944 思路:一开始用的bfs求每一次的利润,后来就是有好多点过不去,参考了网上的做法,可以先算出 树的深度,然后求根据深度求出最大结果。 注意:(1)mx的初始值很重要,我一开始设为-1,后来发现有一个点过不去,是因为如果树的深度是1...

积少成多,水滴石穿 381

机器学习实战4-教育领域:学生成绩的可视化分析与成绩预测-详细分析

大家好,我是微学AI,今天给大家带来机器学习实战4-学生成绩的可视化分析与成绩预测,机器学习在教育中的应用具有很大的潜力,特别是在学生成绩的可视化分析与成绩预测方面。机器学习可以通过对学生的父母教育情况和学校表现等数据进行分析和挖掘,从而揭示潜在的学习模式和趋势。

微学AI的博客 7680

BFS——PAT 甲级 1004

树和二叉树 树 是一种数据结构,由n(>=1)个有限节点组成的,具有层次关系的集合 根朝上,叶朝下 每个节点有0或者多个子节点 叶子结点:0 根节点:没有父节点 一个孩子->一个父亲 一个父亲->多个孩子 二叉树 每个节点最多含有2个子树的树称之为二叉树 满二叉树:除最后一层没有任何子节点外,每一层的所有节点都有两个子节点(永远存在最后一层的节点没有子节点,所以永远不存在...

jhckii的博客 207

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

PAT甲级 1004 - dfs 和 bfs

PAT甲级 1004题目 Counting Leaves解析源码代码代码 - bfs代码 - dfs 题目 Counting Leaves A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Sp...

qq_37208650的博客 340

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

PAT Acute Stroke (30) (bfs)

题目大意: 看了别人博客我才搞懂题目意思.....PAT这题目意思也太那啥了,,,,感觉最难的部分就是读懂题目意思了. bfs解法,很传统老套的做法,就是三维块中,如果一个连通块其大小不小于k那么就记录答案数.给定三维状态图. #include<bits/stdc++.h> using namespace std; #define debug puts("YES"); #...

满月照亮的路 258

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

PAT1106(BFS)

PAT 1106 思路 BFS用在tree上,这一个题里主要关注的是用vector去保存每一个节点所连接的子节点,当BFS 时,一旦发现该节点下面没有子节点,这一层一定是最短的路径,然后用当前的层数去为后面的节点做判断,如果接下来,仍然有节点没有子节点,那么用层数去验 证,如果层数一致则是,否则不是。 STL——vector vector 1 #include<iostrea...

weixin_30242907的博客 150

【PAT】A1091 Acute Stroke【DFS】【BFS】

One important factor to identify acute stroke (急性脑卒中) is the volume of the stroke core. Given the results of image analysis in which the core regions are identified in each MRI slice, your job is to c...

elegant coder 877

PAT 1076 Forwards on Weibo (BFS)

题目链接:PAT 1076 Forwards on Weibo 很裸的BFS… 但是我还是de了一会bug,原因可归结于我智障,算深度作死在循环里算,就是这个time,这样其实相当于每遍历一个点深度都会+1,打断点打好久才发现这个问题。 (怎么感觉做到的题越来越简单了…) #include<bits/stdc++.h> using namespace std; vector<int>v[1003]; int main() { int n, l; cin >> n

RobinWitch的博客 188

PAT 甲 1076 Forwards on Weibo 图的BFS

2022.2.12 练习 PAT甲 1076 Forwards on Weibo (原题链接) #include <bits/stdc++.h> using namespace std; const int MAX_NUM=1010; int inq[MAX_NUM]={0}; struct Node { int v; int layer; }; vector<Node> adj[MAX_NUM]; int BFS(int s,int l) { int

想买很多漂亮衣服但是买不起的博客 239

PAT甲级1013 (BFS求图的连通分量数)

题目链接:PAT甲级1013 分析:添加的最少的路线,就是他们的连通分量数-1,因为当a个互相分立的连通分量需要变为连通图的时候,只需要添加a-1个路线,就能让他们相连。由于删除的城市单独为一个连通分量,所以就是他们的连通分量数-2,所以这道题就是求去除了某个结点之后其他的图所拥有的连通分量数cnt。 #include &lt;stdio.h&gt; #include &lt;string.h&...

weixin_44405344的博客 517

pat甲级 1021. Deepest Root(bfs求连通分量)

题目内容 具体题目见https://www.patest.cn/contests/pat-a-practise/1021 分析内容 1.判断连通分量的个数,可以用dfs,可以用并查集,也可以用bfs 2.为什么选择bfs,因为题目中要求转化成树,并且求出树最大层次的根节点,这需要用到层次遍历,因此bfs更好。因为bfs自身就用到队列。 3.对每个节点进行一个bfs,才能求出这个节点对应的层

zhanggirlzhangboy的博客 419

PAT L3-008. 喊山(BFS)C4 初赛

题目链接:https://www.patest.cn/contests/gplt/L3-008 L3-008. 喊山 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 喊山,是人双手围在

你误入了一个弱渣的领域 2670

PAT天梯赛 L2-026. 小字辈 【BFS】

题目链接 https://www.patest.cn/contests/gplt/L2-026 思路 用一个二维vector 来保存 每个人的子女 然后用BFS 广搜下去,当目前的状态 是搜完的时候 那么此时队列里的人都是最小的一辈 标记一下 CUR 然后 讲答案压入VECTOR 然后排序一下 输出来就可以 AC代码 #incl...

banshen0201的博客 114

PAT甲级——1090 Highest Price in Supply Chain (BFS或者DFS)

1090Highest Price in Supply Chain(25分) A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone involved in moving a product from supplier to customer. Star...

小熊猫的博客 398

PAT 1004 Counting Leaves(BFS+模拟树)

原题地址https://www.patest.cn/contests/pat-a-practise/1004 题意:一棵有N个结点的树,其中有M个结点是非叶子结点,给出每个非叶子结点的孩子结点编号,求出每一层上的非叶子结点个数。 解题思路本题考察树的结构,这种看似树结构,但用数字编号表示节点的题目,经常可以用数组模拟,无需构造出一棵树。数据结构:   注意到结点编号最多为两位,因此100以内的

Lecholin的博客 496
上一篇: PAT - DFS
下一篇: PAT - 1020 Tree Traversals
DedicateToAI
博客等级 码龄9年 6粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值