算法-BFS搜索

题目一

解题思路

比较标准的暴力搜索+空间换时间的策略

二维数组map表示具体地图,far表示遍历过程中某点到起点的距离。

队列 q 表示在遍历过程中当前距离的所以节点坐标。

每次的节点寻找其上下左右四个方向可以继续前进的点(这里在过程中会发生两个点循环的情况,不过不影响结果,有兴趣可以优化一下)。

边界问题

isVaild函数判断每次寻找的上下左右四个坐标是否合规。

终点判断为(n-1,m-1),因为我的遍历是从(0,0)点开始的。

代码模板

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;const int N=110;
typedef pair<int,int>PII;int map[N][N];
int far[N][N];int n,m;bool isVaild(int x,int y)
{return x>=0&&x<n&&y>=0&&y<m;
}int bfs(int a,int b)
{queue <PII> q;q.push({a,b});far[a][b]=0;int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};while(!q.empty()){PII cell=q.front();q.pop();int x=cell.first;int y=cell.second;for(int i=0;i<4;i++){int nx=x+dx[i];int ny=y+dy[i];if(isVaild(nx,ny)&&map[nx][ny]==0&&far[nx][ny]==5000){far[nx][ny]=far[x][y]+1;q.push({nx,ny});if(nx==n-1&&ny==m-1)return far[nx][ny];}}}return 0;
}
int main()
{cin>>n>>m;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>map[i][j];far[i][j]=5000;}}int dis=bfs(0,0);cout<<dis<<endl;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

pyqt designer使用spliter

1、在designer界面需要使用spliter需要父界面不使用布局&#xff0c;减需要分割两个模块选中&#xff0c;再点击spliter分割 2、在分割后&#xff0c;再对父界面进行布局设置 3、对于两边需要不等比列放置的&#xff0c;需要套一层 group box在最外层进行分割

cesium获取模型的数据包含b3dm和cmpt

getreadyPromise()方法在模型加载完成后调用 url为模型地址 // tileset模型 function tilesetM(url) {tileset viewer.scene.primitives.add(new Cesium.Cesium3DTileset({// url: ../../public/asd/tileset.json,url: url,// type: "3dtiles",maximumScreenSpace…

构建稳固与安全的网络环境:从微软蓝屏事件看软件更新流程与应急响应

“微软蓝屏”事件暴露了网络安全哪些问题&#xff1f; 近日&#xff0c;由微软视窗系统软件更新引发的全球性“微软蓝屏”事件&#xff0c;不仅让科技领域为之震动&#xff0c;更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件源于美国电脑安全技术公司“众击”的一…

浅谈Mike11中常见的错误及解决方法

前言&#xff1a; 小编对MIKE11比较熟悉&#xff0c;今天为大家总结了mike11中常见的一些错误及解决方法分享给大家。 一&#xff1a;could not open license file 当你打开MIKE11出现这种情况是一般是试用版的License没安装成功&#xff0c;或者安装杀毒软件导致License被当…

SEO与数据中心代理IP的结合能带来哪些便利?

本文将探讨将SEO与数据中心代理IP结合所带来的好处&#xff0c;以及如何利用这种组合来提升网站在搜索引擎中的排名和可见性。 1. 数据中心代理IP的作用和优势 数据中心代理IP指的是由数据中心提供的IP地址&#xff0c;用于隐藏真实服务器的位置和身份。与其他类型的代理IP相…

网络安全常见错误及解决办法(更新中)

# 开启代理&#xff0c;无法连接网络 把代理关掉 # 上一秒还在安装tree&#xff0c;下一秒xshell就连接不上了 —》sshd服务的key这个文件权限过高&#xff0c;跟装tree没有关系&#xff0c;装一个epel 源&#xff0c;epel-release​ 部分命令&#xff1a;chmod 600 /etc/ssh…

可见性::

目录 定义&#xff1a; 解决方法&#xff1a; ①使用synchronized实现缓存和内存的同步 修改一&#xff1a; 加入语句&#xff1a; 代码&#xff1a; 修改2&#xff1a; 在代码块中加入&#xff1a; 代码&#xff1a; 执行结果&#xff1a; 原因&#xff1a; ②使用…

hot100-双指针

283移动零 11盛最多水的容器 暴力解法&#xff08;超时了&#xff09;、双指针法 15三数之和 42接雨水

如何关闭页面报错的遮罩层

问题&#xff1a;如何关闭页面报错的遮罩层 解决方法&#xff1a; 在vue.config.js中添加如下配置&#xff0c;重启项目即可 module.exports defineConfig({devServer: {client: {overlay: false,},}})

Android P Input设备变化监听 Storage设备变化监听

InputManager.java中实现了InputDeviceListener接口&#xff0c;只需要新建一个类 implements InputDeviceListener &#xff0c;并且将类实例化注册给InputManager.getInstance().registerInputDeviceListener即可。 StorageManager同理 StorageManager中会调用StorageEventL…

FastAPI(七十六)实战开发《在线课程学习系统》接口开发-- 课程详情

源码见&#xff1a;"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 这个接口用户可以不登录&#xff0c;因为我们的课程随意浏览 那么我们梳理下这里的逻辑 1.根据课程id判断课程是否存在 2.课程需要返回课程的详情 3…

【每日刷题】Day86

【每日刷题】Day86 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 118. 杨辉三角 - 力扣&#xff08;LeetCode&#xff09; 2. 数组中出现次数超过一半的数字_牛客题霸…

学习笔记---java篇(0723)

p11 Dos 磁盘操作系统&#xff0c;命令操作如下&#xff1a; 命令作用cd 目录路径进入一个目录cd …进入父目录dir查看本目录下的文件和子目录列表cls清除屏幕命令上下键查找敲过的命令Tab键自动补齐命令 二进制转换工具&#xff1a;[进制转换 - 在线工具 (tool.lu)]( p15 …

.h264 .h265 压缩率的直观感受

1.资源文件 https://download.csdn.net/download/twicave/89579327 上面是.264 .265和原始的YUV420文件&#xff0c;各自的大小。 2.转换工具&#xff1a; 2.1 .h264 .h265互转 可以使用ffmpeg工具&#xff1a;Builds - CODEX FFMPEG gyan.dev 命令行参数&#xff1a; …

Linux冯诺依曼体系、操作系统、进程概念、进程状态、进程切换

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;Linux 目录 一、冯诺依曼体系结构 二、操作系统 1、概念 2、为什么要有操作系统&#xff1f; 3、理解操作系统 1.管理的本质 2.管理的概念 3.操作系统结构图 4.为什么要有操作系统&#xff1f; 三…

Windows版本免费PyMol的安装

技术背景 在前面一篇博客中&#xff0c;我们介绍过在Linux平台下安装和使用免费版本的PyMol。其实同样的这个免费版在Windows平台上(这里以win11为例)也是支持的。 安装流程 这个免费版本的PyMol依赖于Conda&#xff0c;因此首先需要访问conda官网下载一个miniconda到本地进行安…

鸿蒙UI系统组件10——菜单(Menu)

果你也对鸿蒙开发感兴趣&#xff0c;加入“Harmony自习室”吧&#xff01;扫描下面名片&#xff0c;关注公众号。 Menu是菜单接口&#xff0c;一般用于鼠标右键弹窗、点击弹窗等。 1、创建默认样式的菜单 菜单需要调用bindMenu接口来实现。bindMenu响应绑定组件的点击事件&am…

【权威发布】第二届机械电子工程与软件工程国际会议(MEESE 2024)

第二届机械电子工程与软件工程国际会议 2024 International Conference on Mechanical and Electronic Engineering and Software Engineering 【1】会议简介 第二届机械电子工程与软件工程国际会议是一个专注于机械电子工程与软件工程领域交叉融合的国际盛会。会议旨在汇聚全球…

充满惊喜与欢乐的老友

在这个充满惊喜与欢笑的娱乐圈里&#xff0c;每一个不经意的可能成为网友热议的焦点&#xff0c;而《快乐老友记》的花絮&#xff0c;无疑为这个多彩的世界又添上了一抹亮丽的色彩。当“王栎鑫被路人认成张艺兴”这一话题如春风般拂过网络&#xff0c;不仅让两位才华横溢的艺人…

concrt140.dll丢失是什么情况?有效的解决dll!

concrt140.dll文件丢失是电脑中少见的文件&#xff0c;但也会因为某些原因会导致电脑丢失concrt140.dll文件&#xff0c;那么出现这文件的原因是什么呢&#xff1f;出现这样的问题有什么办法可以将concrt140.dll修复呢&#xff1f;一起来看看吧。 为什么会缺失concrt140.dll文件…