营救 BFS入门

进击高手【第四期】(bfs) bfs 定义 宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。 模板 struct node{ int x,y,step;//x,y都表示坐标 step表示步数 }t1,t2; void bfs(int x 阅读详情

题目描述

        铁塔尼号遇险了!他发出了求救信号。距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里。

        通过侦测,哥伦比亚号获取了一张海洋图。这张图将海洋部分分化成n*n个比较小的单位,其中用1标明的是陆地,用0标明是海洋。船只能从一个格子,移到相邻的四个格子。

       为了尽快赶到出事地点,哥伦比亚号最少需要走多远的距离。

输入

第一行为n,下面是一个n*n的0、1矩阵,表示海洋地图

最后一行为四个小于n的整数,分别表示哥伦比亚号和铁塔尼号的位置。

输出

输出哥伦比亚号到铁塔尼号的最短距离,答案精确到整数。

样例输入

3
001
101
100
1 1 3 3

样例输出

4

提示

 


N<=1000

解题思路:此题较为简单,重点在于将解答树中的每层子节点的层数标记出来,这样最先找到结果的层数就为最少补数。

#include<bits/stdc++.h>
using namespace std;
int n,m,b[1000][1000]={0},num=0,g,g1,t1,t;
int dx[]={-1,0,1,0};//方向 
int dy[]={0,1,0,-1};
struct point 
{
  int x;
  int y;
  int c;
  point (int xx,int yy)
  {
  	x=xx;
  	y=yy;
  	
	  }	
};
int bfs(point start)
 {

 	queue<point>q;
 	q.push(start);
 	b[start.x][start.y]=2;
 	while(!q.empty())
 	{    point p=q.front();
 	 if(p.x==t&&p.y==t1)
	  { num=p.c;
	  	break;
	  }

 	  q.pop();
 	   
 		  for(int i=0;i<4;i++)
 		   {
 		   	 point tp(p.x+dx[i],p.y+dy[i]);
 		   	 if(tp.x>=0&&tp.x<m&&tp.y>=0&&tp.y<n&&!b[tp.x][tp.y])
 		   	  { tp.c=p.c+1;//关键的层数 
 		   	  	 q.push(tp);
 		   	  	  b[tp.x][tp.y]=2;
 		   	  	  
 		   	  	 
 		   	  	 
				  }
			}
	 }
 }
int main()
{  

scanf("%d",&n);
m=n;
 for(int i=0;i<n;i++)
  {
  	  for(int j=0;j<n;j++)
  	    {scanf("%1d",&b[i][j]);
  	   
		  }
  	   
	 }  
	  scanf("%d %d %d %d",&g,&g1,&t,&t1) ;
	  g--;
	  g1--;
	  t--;
	  t1--;

	 point start(g,g1);
	  start.c=0;
	  
	  bfs(start);

	 
 	cout<<num<<endl;
}

 

深入浅出学算法115-营救 深入浅出学算法115-营救题解(广搜) 阅读详情

相关推荐

实现BFS之“营救”

广度优先遍历(Breadth First Search,BFS)是一个分层的搜索过程,没有回退过程,是非递归的。 DFS与BFS的小秘密: 1、深度优先搜索算法的思路很简单,比较好理解,但得到的解不是最优的;而广度优先搜索则恰恰相反; 2、如果节点有无穷多个,深度优先搜索算法在某处分支可以无限搜索下去却找不到解,这时我们可以采用有界深度优先搜索~

Zenail的专栏 2365

营救(广搜练习)

铁塔尼号遇险了!他发出了求救信号。距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里。         通过侦测,哥伦比亚号获取了一张海洋图。这张图将海洋部分分化成n*n个比较小的单位,其中用1标明的是陆地,用0标明是海洋。船只能从一个格子,移到相邻的四个格子。        为了尽快赶到出事地点,哥伦比亚号最少需要走多远的距离。 样例输入 3 001 101 100 ...

qq_42764677的博客 1120

【C++广度搜索】营救

我想不会有什么帮助的索引 队列我有写过一篇题解来说明,见:【C++广度搜索入门】面积 这是我的第二篇广搜题解,可能仍有众多不足,请大家多指教,欢迎与我讨论 题目 问题 B: 营救 时间限制: 1 Sec  内存限制: 128 MB 题目描述         铁塔尼号遇险了!他发出了求救信号。距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里。         通过侦...

JaneSilver的博客 2913

【LuoguP4142】洞穴遇险

题目链接 题意 自己看题面 Sol 一个格子只能被占用一次,n只有50? 有什么想法? DP? 退火? 贪心? 先来看看这个柱子是个啥玩意 首先只用把拐角出放在一个X+Y是奇数的格子 然后他会占掉另外两个格子,并且是它周围的相邻的格子 发现一个东西:占掉的一定是一个X和Y均是偶数的格子和一个X和Y均是奇数的格子 把这两个分开考虑? 感觉放了一个柱子就等价于走了一遍上面提到...

Yu Gi Oh! 382

Python海康相机api---超简单入坑学习必看

海康官网下载相机驱动​安装好以后找到Python的开发文件目录参考:D:\MVS\MVS\Development\Samples\Python\MvImport这几个文件很重要,想调用海康相机取图会用到.​为了写代码方便可以把这几个文件拷贝一下,跟你的api主文件放在同一个文件夹下可以减少80%的烦恼.​。

weixin_59360687的博客 3478

告别裸奔MCU!手把手教你用MCP2515+STM32搭建稳定CAN总线通信(附完整代码)

本文详细介绍了如何使用MCP2515与STM32搭建稳定可靠的CAN总线通信系统,适用于汽车电子和工业控制领域。通过硬件架构设计、驱动层实现、数据收发实战及故障排查手册,帮助开发者快速掌握CAN通信技术,提升系统稳定性和开发效率。

weixin_28703489的博客 208

9.13 a.m.小结

T1:问题 A: 营救 题目描述 铁塔尼号遇险了!他发出了求救信号。距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里。通过侦测,哥伦比亚号获取了一张海洋图。这张图将海洋部分分化成 n*n 个比较小的单位,其中用 1 标明的是陆地,用 0 标明是海洋。船只能从一个格子,移到相邻的四个格子。为了尽快赶到出事地点,哥伦比亚号最少需要走多远的距离。 输入 第一行为 n,下面是一个 n*n 的 0、1 矩阵,表示海洋地图。最后一行为四个小于 n 的整数,分别表示哥伦比亚号和铁塔尼号的位置。 输

Penguin_Wang的博客 604

Zabbix-获取客户端的SNMP数据

网口状态(ifOperStatus)的 OID 是1.3.6.1.2.1.2.2.1.8,查询时需要用1.3.6.1.2.1.2.2.1.8.1(第 1 个网口)、1.3.6.1.2.1.2.2.1.8.2(第 2 个网口)等。表格对象是指 “包含多个同类实例的对象”(如设备的多个网口、多个进程等,每个实例需要单独标识)。在 SNMP 规范中,标量对象的完整 OID 必须以.0结尾,.0是标量对象的唯一实例编号。标量对象是指 “单一值的对象”(如设备的名称、温度、状态等,整个设备只需要一个值来表示)。

徐子元 1726

营救BFS

Problem DescriptionAngel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M

no_play_no_games的博客 1259

使用TensorFlow Lite Micro流程记录(带源码)

记录如何使用tensorflow lite micro,以及期间解决的问题

ZhaoDongyu_AK47的博客 6215

利用python语言进行相机标定

利用python语言进行相机标定 目录利用python语言进行相机标定一、相机标定相关原理1.相机标定简介2.坐标映射2.1图像坐标系1)图像坐标系(Pixel coordinate system)2)成像平面坐标系(Retinal coordinate system)3)摄像机坐标系(Camera coordinate system)4)世界坐标系(World coordinate system)二、相机标定算法流程1.镜头畸变1.1径向畸变1.2切向畸变2.相机标定算法求解外参内参和单应矩阵关系求解(张

qq_44818951的博客 4698

超级详解洛谷P4011 孤岛营救问题(bfs超难题)(保证看懂)

超级详解洛谷P4011 孤岛营救问题(bfs超难题)(保证看懂)(状态压缩推导)过程

weq2011的博客 1700

Python实战:逐笔高频因子构建与回测全流程解析

本文详细解析了使用Python构建与回测逐笔高频因子的全流程。从逐笔数据的价值与清洗入手,通过实战代码演示了‘大买成交金额占比’因子的计算逻辑,并重点阐述了因子正交化处理的重要性以剔除风格影响。最后,提供了一个经典的分位数回测框架来验证因子有效性,并分享了数据质量、计算效率与过拟合等核心避坑指南。

grass的博客 391

【宽度优先搜索BFS】营救

【宽度优先搜索BFS】营救 题目描述 铁塔尼号遇险了!他发出了求救信号。距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里。 通过侦测,哥伦比亚号获取了一张海洋图。这张图将海洋部分分化成n*n个比较小的单位,其中用1标明的是陆地,用0标明是海洋。船只能从一个格子,移到相邻的四个格子。为了尽快赶到出事地点,哥伦比亚号最少需要走多远的距离。 输入 第一行为n,下面是一个n*n的0、1矩阵,表示海洋地图 最后一行为四个小于n的整数,分别表示哥伦比亚号和铁塔尼号的位置。 输出 哥伦比亚号到铁塔尼号的最短

Y_X_Y168的博客 1025

Puchem化合物数据批量抓取采集_宝典_教程_Python爬虫

本文共计6500字,导出到PDF达42页(含代码)。从0教你如何抓取Pubchem化合物数据。 1、 Pubchem介绍 ​ Pubchem是美国国立卫生研究院(NIH)的开放式化学数据库,自2004年推出以来,pubchem已成为科学家、学生和公众的重要化学信息资源。其专门针对化学结构搜索,是网络药理学研究经常用到的数据库之一,不仅使用方便而且免费。 ​ PubChem主要包含小分子,但也包含较大的分子,例如核苷酸,碳水化合物,脂质,肽和化学修饰的大分子。收集有关化学结构,标识符,化学和物理性..

qq_34843422的博客 6073

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

营救 【题解】

营救: 内存限制:256 MiB 时间限制:1000 ms 题目描述: 铁塔尼号遇险了!他发出了求救信号。距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快 赶到那里。 通过侦测,哥伦比亚号获取了一张海洋图。这张图将海洋部分分化成 n*n 个比较小的单位,其中用 1 标明的是陆地,用 0 标明是海洋。船只能从一个格子,移到相邻的四个格子。 为了尽快赶到出事地点,哥伦比亚号最少需要走多远的距离。 输入格式 第一行为 n,下面是一个 n*n 的 0、1 矩阵,表示海洋地图。 最后一行为四个小于

C202220yanglin的博客 1830

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

洛谷 P4011 孤岛营救问题(BFS分层图最短路,状态压缩)

我们考虑对已获得的钥匙进行二进制状态压缩。注意:同一个格子可能有多把钥匙,一开始的。显然,我们直接使用BFS求最短路即可。这个格子,且当前已有钥匙的状态为。

weixin_74754298的博客 1493

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

c++ 孤岛营救问题

孤岛营救问题 题目描述 1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩。瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图。迷宫的外形是一个长方形,其南北方向被划分为N 行,东西方向被划分为M列,于是整个迷宫被划分为 N×M 个单元。每一个单元的位置可用一个有序数对(单元的行号,单元的列号)来表示。南北或东西方向相邻的 ...

weixin_30511039的博客 661

最小生成树 || ( BFS && 二分答案) —— 营救

洛谷 1369 营救 Code 1 最小生成树解法 #include #include #include #include #define epx 10 using namespace std; const int MAX_E = 20000 + epx; const int MAX_V = 10000 + epx; struct Edge { int fm,to,dist; }

zhuo1ang的博客 360

hrbust 哈理工oj 1989 营救小组【BFS】

hrbust 1989,哈理工oj 1989

mengxiang000000 643

HDU 1242 Rescue营救 BFS算法

HDU 1242 Rescue营救 BFS算法

一蓑烟雨 955

HHUOJ 1896 营救小明

HHUOJ 1896 营救小明 题目描述 一天,小明梦见自己被外星人抓走了,他被关在了一座监狱里,这座监狱形如N*M(N,M<=200)的矩阵,监狱里有墙、道路和守卫。 小明的小伙伴们得知他被外星人抓走后想要把他救出来,他们要试图接近关押小明的那间房间。当他们经过有守卫的房间时他们必须干掉守卫后继续前进,而当遇到墙的时候则只能绕道。他们只能向上下左右四个方向移动,每移动一次耗时1分钟,干掉一...

旺崽的博客 1376

【bfs】【图论】营救

bfs

还有一年 202
上一篇: 计算
下一篇: uva122 二叉树的动态创建与BFS (非递归)
explodee
博客等级 码龄9年 5粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值