【搜索】BFS

#include <iostream>
#include <cstring>
#include <queue>

using namespace std;

const int N = 110;

typedef pair<int, int> PII;

int n, m;
int g[N][N], d[N][N];//存放地图//存每一个点到起点的距离

int bfs()
{
	queue< PII > q;
	
	q.push({0, 0});
	
	memset(d, -1, sizeof(d));//距离初始化为- 1表示没有走过
	
	d[0][0] = 0;//表示起点走过了
	
	
	int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};//x 方向的向量和 y 方向的向量组成的上、右、下、左
	
	while (q.size())//队列不为空
	{
		PII t = q.front();//取队头元素
		
		q.pop();//出队
		
		for (int i = 0; i < 4; i++)//枚举4个方向
		{
			int x = t.first + dx[i], y = t.second + dy[i];//x表示沿着此方向走会走到哪个点
			
			if (x >= 0 && x < n && y >= 0 && y < m && g[x][y] == 0 && d[x][y] == -1)//在边界内 并且是空地可以走 且之前没有走过
			{
				d[x][y] = d[t.first][t.second] + 1;//当前点到起点的距离
				q.push({x, y});//将新坐标入队
			}
		}
	}
	
	return d[n - 1][m -1];
}

int main()
{
	cin >> n >> m;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			cin >> g[i][j];
	
	cout << bfs() << endl;
	
	return 0;
}

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

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

相关文章

变量命名的艺术:让你的代码更具可读性

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;为何变量命名如此重要&#xff1f; 二、变量命名的基本规则 1. 避免数…

Threejs路径规划_基于A*算法案例完整版

上节利用了A*实现了基础的路径规划&#xff0c;这节把整个功能完善好&#xff0c;A*算法一方面是基于当前点找到可以到达的点&#xff0c;计算从出发点到此点&#xff0c;以及此点到目的地的总成本&#xff0c;比较出最小的那个&#xff0c;再用最小成本的点继续找到它可以到达…

无线领夹麦克风哪个品牌音质最好,揭秘无线领夹麦哪个牌子好用

​随着社交媒体和内容创作的兴起&#xff0c;清晰可靠的音频捕捉已成为打造高品质作品的关键要素。无线领夹麦克风因其轻巧设计和用户友好的接口而受到青睐&#xff0c;它能够确保你的声音在任何环境下都能被完美捕捉。经过精心测试和对比&#xff0c;以下几款无线领夹麦克风是…

用手机打印需要下载什么软件

在快节奏的现代生活中&#xff0c;打印需求无处不在&#xff0c;无论是工作文件、学习资料还是生活小贴士&#xff0c;都可能需要一纸呈现。然而&#xff0c;传统的打印方式往往受限于时间和地点&#xff0c;让人倍感不便。今天&#xff0c;就为大家推荐一款便捷又省钱的手机打…

解锁合同管理的新路径:低代码与定制开发的完美结合

引言 合同管理在企业中扮演着至关重要的角色。无论是与供应商、客户还是合作伙伴之间的合作&#xff0c;合同都是约束双方责任和权利的关键文档。然而&#xff0c;随着业务的不断增长和全球化的发展&#xff0c;合同管理变得越来越复杂。传统的合同管理方法往往面临着诸多挑战&…

影响程序员发展,首个关于“软件供应链安全”国家标准发布,你该知道的10个问题!【附标准全文】

近日&#xff0c;GB/T 43698-2024《网络安全技术 软件供应链安全要求》作为国内首个软件供应链安全的国标&#xff0c;对于程序员的影响深远。该标准的实施&#xff0c;不仅为程序员提供了明确的软件安全开发指导&#xff0c;还强化了他们在软件开发过程中对安全性的重视。程序…

第十三节:带你梳理Vue2 : watch侦听器

官方解释:> 观察 Vue 实例变化的一个表达式或计算属性函数。回调函数得到的参数为新值和旧值。表达式只接受监督的键路径。对于更复杂的表达式&#xff0c;用一个函数取代<br/>## 1. 侦听器的基本使用侦听器可以监听data对象属性或者计算属性的变化watch是观察属性的…

哈夫曼树的介绍

引入 概述 基本概念 示例 算法实现 存储结构 具体步骤 示例 初始化 合并 示例 代码整合&#xff1a; //哈夫曼树的建立 //定义类型:权值双亲结点左右孩子结点 typedef struct {int weight;int parent;int lchild,rchild; }Hnode,*huffmantree; //建立 1.判断有结点&#xf…

入门四认识HTML

一、HTML介绍 1、Web前端三大核心技术 HTML&#xff1a;负责网页的架构 CSS&#xff1a;负责网页的样式、美化 JS&#xff1a;负责网页的行动 2、什么是HTML HTML是用来描述网页的一种语言。 3、Html标签 单标签<html> 双标签<h>内容</h> 4、标…

如何零基础快速制作商业画册?这篇攻略帮你搞定

随着社会经济的发展&#xff0c;商业画册作为企业形象和产品介绍的重要载体&#xff0c;越来越受到重视。然而&#xff0c;很多企业和个人由于没有设计背景&#xff0c;在面对制作商业画册时往往感到困惑。本文将为你介绍零基础快速制作商业画册的攻略&#xff0c;让你轻松搞定…

Live800:提升客服服务质量,企业应从这几个方面下功夫

客户服务质量&#xff0c;是企业为客户提供优质服务的一个重要衡量指标。通常来说&#xff0c;一个企业的客服部门在其经营活动中发挥着重要作用&#xff0c;是客户与企业之间沟通的桥梁。良好的客服服务&#xff0c;不仅能够提高客户满意度&#xff0c;还能增强企业品牌的美誉…

Java中String类常用方法

写笔记记录自己的学习记录以及巩固细节 目录 1.String类的常用方法 1.1 字符串构造 1.2 String对象的比较 1.2.1 比较两个字符串是否相等 1.2.2 比较两个字符串的大小 1.3 字符串查找 1.4 字符串的转化 1.4.1 字符串转整数 1.4.2 字符串转数字 1.4.3 大小写的转换 1…

Mysql注入详细讲解

特殊字符 0x3a:0x7e~0x23# 注入基础 联合查询注入(union) :::tips 页面将SQL查询内容显示出来&#xff0c;即为有回显&#xff0c;可以尝试联合查询注入 利用关键字union &#xff0c;union all 拼接恶意SQL语句 ::: 注入流程 有报错&#xff0c;可以利用报错。如&#xff…

day 38 435.无重叠区间 763.划分字母区间 56. 合并区间 738.单调递增的数字 968.监控二叉树

435.无重叠区间 思路 为了使区间尽可能的重叠所以排序来使区间尽量的重叠&#xff0c;使用左边界排序来统计重叠区间的个数与452. 用最少数量的箭引爆气球恰好相反。 代码 class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals,(a,…

不同类型的区块链钱包有什么特点和适用场景?

区块链钱包是用于存储和管理加密货币的重要工具&#xff0c;市面上有许多不同类型的区块链钱包可供选择。以下是几种主要类型的区块链钱包及其特点和适用场景。 1.软件钱包&#xff1a; 特点&#xff1a;软件钱包是最常见的一种区块链钱包&#xff0c;通常作为软件应用程序提供…

系统工程 | 系统工程概识

系统工程是为了最好地实现系统的目的&#xff0c;对系统的组成要素、组织结构、信息流、控制机构等进行分析研究的科学方法。 它运用各种组织管理技术&#xff0c;使系统的整体与局部之间的关系协调和相互配合&#xff0c;实现总体的最优运行。 系统工程不同于一般的传统工程…

指针数组与数组指针的理解

typedef struct vexnode {int key;struct arcnode *next; }vexnode, adjlist[MVNUM]; void init(adjlist *list); void init(adjlist *list) {for(size_t i 0; i < MVNUM; i){list[i].key i;list[i].next NULL;} }上述代码编译的时候没有报错&#xff0c;但是运行的时候&…

数据仓库和数据挖掘基础

文章目录 1. 数据仓库基础知识1.1 数据仓库的基本特性1.2 数据仓库的数据模式1.3 数据仓库的体系结构 2. 数据挖掘基础知识2.1 数据挖掘的分类2.2 数据挖掘技术2.3 数据挖掘的应用过程 传统数据库在联机事务处理(OLTP)中获得了较大的成功&#xff0c;但是对管理人员的决策分析要…

LeetCode刷题笔记第2769题:找到最大的可达成数字

LeetCode刷题笔记第2769题&#xff1a;找到最大的可达成数字 题目&#xff1a; 想法&#xff1a; 从题目中可以看出&#xff0c;num经过t次增减变为x&#xff0c;x即为可达成数字。因为要求最大的可达成数字&#xff0c;需要满足num一直增加&#xff0c;x一直减少&#xff0c…

第七节:带你全面理解vue3: 其他响应式进阶API

前言: 针对vue3官网中, 响应式:进阶API 中, 我们在上一章中给大家讲解了shallowRef, shallowReactive, shallowReadonly几个API的使用. 本章主要对剩下的API 进行讲解, 我们先看一下官网中进阶API 都有那些 对于剩下这些API, 你需要了解他们创建目的, 是为了解决之前的API存在…