蓝桥杯备考:bfs之马的遍历

embedded/2025/3/11 0:09:44/

像这种最短路径啊,我们一般都是用的bfs来求

像这道题,我们要定义dxdy两个方向向量

然后我们先把起点放在队列里面,然后把起点出队列,把最短路径是1的点放在队列里面,然后在再依次把最短路径是1的点出队列,把最短路径是2的点代入队列,一直到队列里没有元素时截至,进队列的同时我们要把这个队列的最短路径存到二维数组里面

方向向量的选择

BFS遍历过程

下面我们来展示代码

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
const int N = 410;
int path[N][N];
typedef pair<int,int> PII;
int n,m,x,y;
int dx[] = {1, 2, 2, 1, -1, -2, -2, -1};
int dy[] = {2, 1, -1, -2, -2, -1, 1, 2};
void bfs()
{queue <PII> q;q.push({x,y});path[x][y] = 0;while(q.size()){auto t = q.front();q.pop();int px = t.first; int py = t.second;for(int i = 0;i<=7;i++){int x = px+dx[i];int y = py+dy[i];if(x<1 || x>n || y<1 || y>m) continue;if(path[x][y]!=-1) continue;path[x][y] = path[px][py]+1;q.push({x,y});} }}
int main()
{cin >> n >> m >> x >> y;memset(path,-1,sizeof path);bfs();for(int i = 1;i<=n;i++){for(int j = 1;j<=m;j++){cout << path[i][j] << " ";}cout << endl;}return 0;
}


http://www.ppmy.cn/embedded/171611.html

相关文章

git-在ubuntu/debian搭建简易的git服务器

安装git sudo apt-get update sudo apt-get install git -y 创建一个git用户并建立一个 .ssh 目录和验证文件&#xff1a; sudo adduser git su git cd mkdir .ssh && chmod 700 .ssh touch .ssh/authorized_keys # ssh用户验证 然后将ssh公钥添加到authorized_ke…

uniapp 自定义地图组件(根据经纬度展示地图地理位置)

目录 一、定义组件&#xff08;pages/compoent/diy/mapDiy.vue&#xff09; 二、父页面引入子组件 一、定义组件&#xff08;pages/compoent/diy/mapDiy.vue&#xff09; <template><view class"diy-map" :style"{padding: paddingTop paddingL…

行式数据库与列式数据库区别

列式数据库&#xff08;Columnar Database&#xff09;和行式数据库&#xff08;Row-based Database&#xff09;是两种不同的数据存储和检索方式&#xff0c;它们在数据组织、存储结构和适用场景上有显著区别。以下是对两者的详细对比&#xff1a; 1. 数据存储方式 行式数据库…

分布式缓存的原理

分布式缓存的原理 随着微服务架构和大规模系统的普及&#xff0c;分布式缓存已经成为了提高应用性能、降低数据库压力和保障系统可扩展性的重要工具。无论是高并发的电商平台&#xff0c;还是分布式的大数据处理系统&#xff0c;缓存都扮演着至关重要的角色。我们需要了解什么…

c++进阶--map和set的使用

大家好&#xff0c;昨天我们学习了二叉搜索树&#xff0c;今天我们来学习一下map和set容器的使用。 目录 1. map和set的使⽤ 1.1 序列式容器和关联式容器 2. set系列的使⽤ 2.1 参考文档 2.2 set类的介绍 2.3 set的构造和迭代器 2.4 set的增删查 2.5 insert和迭代器…

IDEA与Maven使用-学习记录(持续补充...)

1. 下载与安装 以ideaIU-2021.3.1为例&#xff0c;安装步骤&#xff1a; 以管理员身份启动ideaIU-2021.3.1修改安装路径为&#xff1a;D:\Program Files\JetBrains\IntelliJ IDEA 2021.3.1勾选【创建桌面快捷方式】&#xff08;可选&#xff09;、【打开文件夹作为项目】&…

K8S 集群搭建——cri-dockerd版

目录 一、工作准备 1.配置主机名 2.配置hosts解析 3.配置免密登录&#xff08;只需要在master上操作&#xff09; 4.时间同步&#xff08;每台节点都要做&#xff0c;必做&#xff0c;否则可能会因为时间不同步导致集群初始化失败&#xff09; 5.关闭系统防火墙 6.配置…

基于Spring Boot的城市垃圾分类管理系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…