CSP/信奥赛C++刷题训练:经典广搜例题(4):洛谷P1746 :离开中山路

CSP/信奥赛C++刷题训练:经典广搜例题(4):洛谷P1746 :离开中山路

在这里插入图片描述

题目背景

《爱与愁的故事第三弹·shopping》最终章。

题目描述

爱与愁大神买完东西后,打算坐车离开中山路。现在爱与愁大神在 x 1 , y 1 x_1,y_1 x1,y1 处,车站在 x 2 , y 2 x_2,y_2 x2,y2 处。现在给出一个 n × n ( n ≤ 1000 ) n \times n(n \le 1000) n×n(n1000) 的地图, 0 0 0 表示马路, 1 1 1 表示店铺(不能从店铺穿过),爱与愁大神只能垂直或水平着在马路上行进。爱与愁大神为了节省时间,他要求最短到达目的地距离(每两个相邻坐标间距离为 1 1 1)。你能帮他解决吗?

输入格式

1 1 1 行包含一个数 n n n

2 2 2 行到第 n + 1 n+1 n+1 行:整个地图描述( 0 0 0 表示马路, 1 1 1 表示店铺,注意两个数之间没有空格)。

n + 2 n+2 n+2 行:四个数 x 1 , y 1 , x 2 , y 2 x_1,y_1,x_2,y_2 x1,y1,x2,y2

输出格式

只有 1 1 1 行,即最短到达目的地距离。

样例 #1

样例输入 #1

3
001
101
100
1 1 3 3

样例输出 #1

4

提示

对于 20 % 20\% 20% 数据,满足 1 ≤ n ≤ 100 1\leq n \le 100 1n100

对于 100 % 100\% 100% 数据,满足 1 ≤ n ≤ 1000 1\leq n \le 1000 1n1000

使用广搜解题

#include<bits/stdc++.h>
using namespace std;
int n;
char a[1010][1010];//存地图 
int vis[1010][1010];//存步数
int dx[4]={-1,0,1,0};//上、右、下、左 
int dy[4]={0,1,0,-1}; 
int q[1000001][2];//数组模拟队列 
void bfs(int x,int y){ int head=1,tail=1;//头、尾指针q[1][0]=x;//起点入队 q[1][1]=y; vis[x][y]=0;//标记起点:步数为0 while(head<=tail){int nowx=q[head][0];//取当前点 int nowy=q[head][1];for(int i=0;i<=3;i++){int nx=nowx+dx[i];//新点 int ny=nowy+dy[i];if(nx>=1 && nx<=n && ny>=1 && ny<=n && a[nx][ny]=='0' && vis[nx][ny]==-1){tail++;//队尾下标+1q[tail][0]=nx;//新点入队q[tail][1]=ny;vis[nx][ny]=vis[nowx][nowy]+1;//标记:步数加1 }}head++;//队首出队 } 
} 
int main(){cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];}} int x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;memset(vis,-1,sizeof(vis));//初始化vis数组 bfs(x1,y1);//从x1,y1点开始搜索cout<<vis[x2][y2];//输出答案 return 0;
} 

文末彩蛋:

点击王老师青少年编程主页有更多精彩内容

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CST汽车天线仿真(双向混合求解)

CST从2018版本开始具有双向混合求解&#xff0c;到2019版已经通用微波工作室的各个求解器之间的双向混合。具体的混合对象如下图&#xff1a; 对天线的安装和耦合仿真&#xff0c;意味着对复杂结构&#xff08;天线&#xff09;和电大尺寸环境&#xff08;安装平台&#xff0c;…

【鸿蒙】HarmonyOS NEXT应用开发快速入门教程之布局篇(下)

系列文章目录 【鸿蒙】HarmonyOS NEXT开发快速入门教程之ArkTS语法装饰器&#xff08;上&#xff09; 【鸿蒙】HarmonyOS NEXT开发快速入门教程之ArkTS语法装饰器&#xff08;下&#xff09; 【鸿蒙】HarmonyOS NEXT应用开发快速入门教程之布局篇&#xff08;上&#xff09; 【…

【HCIP园区网综合拓扑实验】配置步骤与详解(未施工完,持续更新中)

一、实验要求 实验拓扑图如上图所示 1、按照图示的VLAN及IP地址需求&#xff0c;完成相关配置 2、要求SW1为VLAN 2/3的主根及主网关 SW2为vlan 20/30的主根及主网关 SW1和SW2互为备份 3、可以使用super vlan 4、上层通过静态路由协议完成数据通信过程 5、…

C++设计模式结构型模式———外观模式

文章目录 一、引言二、外观模式三、总结 一、引言 外观模式是一种结构型设计模式&#xff0c; 能为程序库、 框架或其他复杂类提供一个简单的接口。也就是说&#xff0c;该模式的目的用于隔离接口&#xff0c;换句话说&#xff0c;就是扮演中间层的角色&#xff0c;把本来结合…

软件设计师:排序算法总结

一、直接插入 排序方式&#xff1a;从第一个数开始&#xff0c;拿两个数比较&#xff0c;把后面一位跟前面的数比较&#xff0c;把较小的数放在前面一位 二、希尔 排序方式&#xff1a;按“增量序列&#xff08;步长&#xff09;”分组比较&#xff0c;组内元素比较交换 假设…

vue输入中文,获取英文首字母缩写

背景&#xff1a;要求输入中文的时候&#xff0c;系统给出对应的首字母大写&#xff0c;作为拼音。 例如&#xff1a;输入“博客”&#xff0c;输出‘BK’ 等等…… 经查&#xff1a;使用 js-pinyin 这个第三方插件即可实现 1. 下载依赖 npm install js-pinyin 或者 yarn ad…

数据结构与算法--回溯法

回溯法 1 括号生成分析&#xff1a; 2 解数独分析代码 回溯法本质是的暴力枚举/遍历法&#xff0c;一般用递归实现。 当我们可以把问题分解为若干个步骤&#xff0c;每个步骤都有若干个选择的时候&#xff0c;若需要列出所有解答形式&#xff0c;则采用枚举法。 1 括号生成 数…

外卖小程序的研究与开发ssm+论文源码调试讲解

2系统关键技术 2.1微信小程序 微信小程序&#xff0c;简称小程序&#xff0c;英文名Mini Program&#xff0c;是一种全新的连接用户与服务的方式&#xff0c;可以快速访问、快速传播&#xff0c;并具有良好的使用体验。 小程序的主要开发语言是JavaScript&#xff0c;它与普通…

花了6000多考下PMP却不会用?你真的懂PMP实际用法吗?

大家都已经下载了PMP的电子版证书吗&#xff1f;虽然拿到了电子证书&#xff0c;但很多人又开始期待纸质版证书。不要着急&#xff0c;考试后需要6-9个月才能拿到纸质版证书&#xff0c;可能还需要等一段时间。 电子证书和纸质证书具有同样的有效性&#xff0c;需要使用证书时…

Spring面向切面编程

目录 1.AOP概述及Spring AOP实现原理 AOP概述 AOP的应用场景 AOP的作用 Spring AOP概述 Spring AOP的实现原理 Spring AOP中Advice的分类 2. 通过xml配置实现AOP 实现步骤&#xff1a; 新增模块&#xff1a; 导入相关依赖&#xff1a; 新增实体类User 新增业务类UserS…

Javaweb选课系统-开源计划-起源-001-完全免费开源

项目部署&#xff0c;效果视频 https://www.bilibili.com/video/BV1LMDUY8Ef7/?spm_id_from333.880.my_history.page.click&vd_source17d16b2e328f19328e077e9cb07565ef项目地址&#xff1a; https://gitee.com/lucky-six/Javaweb-xuanke

【简信CRM-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

Linux云计算 |【第五阶段】PROJECT3-DAY1

主要内容&#xff1a; 跳板机&#xff08;堡垒机&#xff09;的概念、部署JumpeServer 一、跳板机&#xff08;堡垒机&#xff09;的概念 跳板机&#xff08;Jump Server 或 Bastion Host&#xff09;是一种网络安全设备或服务器&#xff0c;也称堡垒机&#xff0c;是一类可作…

宠物空气净化器哪个牌子好?希喂、352两款产品吸力、噪音真实测试

我身为养宠博主&#xff0c;这些年用过不少宠物空气净化器&#xff0c;花费了1w&#xff0c;对很多产品都进行过测评。正值双十一&#xff0c;很多朋友都在问我宠物空气净化器到底有没有必要买&#xff1f;答案毫无疑问是有必要&#xff01; 相比较于其他清理工具&#xff0c;…

Clang-Tidy 是什么?如何让你的代码更干净无瑕

Clang-Tidy&#xff1a;让你的代码更干净&#xff0c;让潜在问题无处遁形 在现代软件开发中&#xff0c;代码质量不再仅仅体现在功能实现上&#xff0c;还包括其可维护性、可读性和潜在问题的检测。clang-tidy 是一款功能强大的静态分析工具&#xff0c;专为 C/C 代码而生&…

微服务中常用分布式锁原理及执行流程

1.什么是分布式锁 分布式锁是一种在分布式系统环境下实现的锁机制&#xff0c;它主要用于解决&#xff0c;多个分布式节点之间对共享资源的互斥访问问题&#xff0c;确保在分布式系统中&#xff0c;即使存在有多个不同节点上的进程或线程&#xff0c;同一时刻也只有一个节点可…

【算法】(Python)动态规划

动态规划&#xff1a; dynamic programming。"programming"指的是一种表格法&#xff0c;而非编写计算机程序。通常解决最优化问题&#xff08;optimization problem&#xff09;。将问题拆分成若干个子问题&#xff0c;求解各子问题来得到原问题的解。适用于多阶段…

PySpark本地开发环境搭建

一.前置事项 请注意&#xff0c;需要先实现Windows的本地JDK和Hadoop的安装。 二.windows安装Anaconda 资源&#xff1a;Miniconda3-py38-4.11.0-Windows-x86-64&#xff0c;在window使用的Anaconda资源-CSDN文库 右键以管理员身份运行&#xff0c;选择你的安装路径&#x…

深度学习经典模型之ZFNet

1 ZFNet 1.1 模型介绍 ​ ZFNet是由 M a t t h e w Matthew Matthew D . Z e i l e r D. Zeiler D.Zeiler和 R o b Rob Rob F e r g u s Fergus Fergus在AlexNet基础上提出的大型卷积网络&#xff0c;在2013年ILSVRC图像分类竞赛中以11.19%的错误率获得冠军&#xff08;实际…

2024网盘搜索引擎合集推荐:高效搜索资源的利器

2024网盘搜索引擎合集推荐&#xff1a;高效搜索资源的利器 在这个信息爆炸的时代&#xff0c;找到合适的资源变得越来越重要。以下是一些网盘搜索引擎的推荐&#xff0c;它们可以帮助您快速找到所需的文件和资料。 咔帕搜索&#xff1a;简单高效的云盘搜索 网址&#xff1a;…