解题报告-HDOJ-1242(广度优先搜索)

【5G核心网】Packet Forwarding Model 数据包转发模型 CP 通过建立,修改,删除 PFCP 会话上下文,以及通过为每个 PFCP 会话赏析哪问提供 PDR FAR QER URR BAR,来控制 UP 面的数据包处理。 每一个 PDR 都包含 PDI(Packet Detection Information,包探测信息),一个或多个字段,与输入数据包进行匹配,并可能与以下规则相关联,从而提供了适用于与 PDI 匹配的数据包的指令集: - One FAR(包含了处理数据包的相关指令) an Apply Act... 阅读详情

题意:

在一个N*M的地图中拯救出一个被困在迷宫中的天使,地图中的“.”表示道路,“a”表示被困的天使,“r”表示天使的朋友,“x”表示守卫,“#”表示围墙(“x”和“#”貌似在题目中没有描述出来,以至于笔者纠结了很长时间)。

假设拯救出天使相当于天使的朋友跑到天使所在的位置,每移动一格,需要消耗一个单位的时间,如果道路上有士兵则需要先把士兵消灭,消灭士兵需要一个单位的时间。输出找到天使所需要的最小时间。如果不能找到天使,则输出“Poor ANGEL has to stay in the prison all his life.”。


解决这道题目的思路是广搜,广搜的思想就不多说了,我们直接说这道题目。我将用一个结构体来描述每一个位置。结构体中的x用来保存该点的信息,如果是围墙就用-1表示,如果是士兵就用2表示(因为经过有士兵的地方需要消耗2个单位的时间),如果是道路就用1表示(知消耗1个单位的时间),如果是天使就用0表示,如果是天使的朋友就用-3表示。

在计算过程中,由于题目没有给出天使的朋友有多少个,所以我们选择从天使开始进行广搜,直到找到了天使的朋友。在搜索的同时记录天使到该点所需要的时间,用结构体中的step记录,step是由经过该点的时间x(这就是为什么将士兵用2保存,道路用1保存)加上前一个点的step得到的,而前一个点就是队头。

以下就是我自己写的AC代码:(我看到有些大牛的代码是0MS的,我这个花了31MS,大家发现有什么可以改进的都可以讨论一下,这是我第一次写的解题报告,希望大家能给我一些新想法,新意见。)

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;

typedef struct node{
	int x;//保存位置信息
	int i,j;
	int step;
}node;

const int MAXN = 200 + 10;
node map[MAXN][MAXN];
int used[MAXN][MAXN];
int col[4][2] = {1,0,0,1,-1,0,0,-1};//方向向量

int main()
{
	int n,m;
	while(cin>>n>>m)
	{
		queue <node> Q;
		memset(used,0,sizeof(used));
		memset(map,-1,sizeof(map));
		int i,j;
		char x[MAXN];
		int angle_x,angle_y;
		for (i = 0; i < n; i++)
		{
			scanf("%s",x);
			for (j = 0; j < m; j++)
			{
				map[i][j].step = 0;
				map[i][j].i = i;
				map[i][j].j = j;
				if (x[j] == '#')
				{
					map[i][j].x = -1;
				}
				else if (x[j] == 'x')
				{
					map[i][j].x = 2;
				}
				else if (x[j] == '.')
				{
					map[i][j].x = 1;
				}
				else if (x[j] == 'a')
				{
					map[i][j].x = 0;
					angle_x = i;
					angle_y = j;
				}
				else if (x[j] == 'r')
				{
					map[i][j].x = -3;
				}
			}
		}
		Q.push(map[angle_x][angle_y]);
		used[angle_x][angle_y] = 1;
		int flag = 0;
		while (!Q.empty())
		{
			node N = Q.front();
			for (int k = 0; k < 4; k++)
			{
				if (N.i + col[k][0] >= 0 && N.i + col[k][0] < n && N.j + col[k][1] >= 0 && N.j + col[k][1] < m)//判断是否越界
				{
					if (map[N.i + col[k][0]][N.j + col[k][1]].x > 0 && used[N.i + col[k][0]][N.j + col[k][1]] == 0)//该点是否能通过且是否被标记
					{
						map[N.i + col[k][0]][N.j + col[k][1]].step = map[N.i + col[k][0]][N.j + col[k][1]].x + Q.front().step;
						used[N.i + col[k][0]][N.j + col[k][1]] = 1;
						Q.push(map[N.i + col[k][0]][N.j + col[k][1]]);
					}
					else if (map[N.i + col[k][0]][N.j + col[k][1]].x == -3)
					{
						flag = map[N.i][N.j].step + 1;
						break;
					}
				}
			}
			Q.pop();
			if (flag)
			{
				break;
			}
		}

		if (flag)
		{
			cout<<flag<<endl;
		}
		else 
		{
			cout<<"Poor ANGEL has to stay in the prison all his life."<<endl;
		}
	}
	return 0;
}


Claude Code Auto Memory 的 Storage Location,SAP ABAP 项目里的本地记忆仓库应该怎么理解 本文介绍了 SAP ABAP 项目中 Claude Code 的 auto memory 机制,重点探讨了其存储位置的设计原理。auto memory 不是存储在项目目录中,而是默认位于 ~/.claude/projects/<project>/memory/,其中 <project> 基于 Git 仓库路径推导,确保同一仓库下的所有工作目录和分支共享记忆。记忆目录包含入口文件 MEMORY.md(仅加载前 200 行)和详细主题文件,这种分层设计类似 CDS View 架构思想。文章还分析了按 Git 仓 阅读详情

相关推荐

【软件分享】天若OCR文字识别V4.48(翻译功能免费)

软件简介 吾爱破解论坛大佬天若幽心开发的一款OCR文字识别工具。支持快速截图识别,以及文本翻译。 下载地址 蓝奏云盘:点击下载 百度网盘:点击下载(密码:4dm4) 坚果云盘:点击下载 天翼云盘:点击下载 微软云盘:点击下载 使用教程 1、下载后对压缩包进行解压 2、双击天若OCR文字识别.exe 3、发现桌面右下角出现软件图标 4、双击软件图标即可开始截图识别 原帖地址 https://www.52pojie.cn/thread-692917-1-1.html ...

XavierJ的博客 1万+

HDOJ(1242)BFS+优先队列

Rescue http://acm.hdu.edu.cn/showproblem.php?pid=1242 题意:"#"是墙,"."是路,"a"是要被救的人,"r"是救援者,"x"是guard。每移动一步,需要一个单位时间。杀死guard也需要一个单位时间。求r到a的最短时间。 第一次听说优先队列,不得不承认我还是太弱了!!! #include <stdio.h> #...

weixin_30321709的博客 143

一人公司 CEO × Accio Work:最大能效实战指南

作为一人公司 CEO,你需要同时扮演市场、销售、运营、财务、产品等多个角色。Accio Work 本质上就是你的。

华盛AI的博客 2096

HDOJ-1242(Rescue)(bfs+优先队列)

HDOJ-1242(Rescue) Problem Description Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M Angel's friends want to save Angel. Their task

hpulw 468

Anaconda创建python环境常见命令

Anaconda功能庞大,其可以理解为一个工具,也是一个可执行命令。Anaconda可以创建多个python环境,且python环境间相互独立。

m0_59405106的博客 1万+

自托管AI邮件助手imap-mcp:安全连接Claude与个人邮箱的完整指南

在AI助手日益普及的今天,如何安全地让AI访问个人邮箱数据成为关键挑战。传统方法如直接暴露IMAP/SMTP凭证存在严重安全隐患,而第三方SaaS服务则涉及隐私泄露风险。Model Context Protocol (MCP) 作为一种新兴的标准化协议,为AI工具安全接入提供了解决方案。其核心价值在于实现数据源与AI助手间的安全、标准化交互,特别适用于处理敏感信息的场景。imap-mcp正是基于MCP协议构建的自托管邮件网关,它通过多层安全机制(包括主密钥加密和OAuth令牌哈希化)保护用户凭证,让用户能在

weixin_28295799的博客 654

HDU 1242 Rescue (搜索 DFS)

题意:天使被困在监狱,他的朋友们想见他,监狱的地形复杂,包括路(用点标示),墙(用#标示),天使的位置(用a标示),他的朋友(用r标示),监狱里还有守卫(用x标示),他的朋友只能向左右上下四个方向走,走以不花一单位时间,若碰上守卫,消灭守卫需要额外花费一单位时间。问最少多长时间天使能见到他的朋友。

凌风 4524

数控系统(CNC)系列:Hurco VMX42SR_(11).加工准备流程

在开始使用Hurco VMX42SR进行加工之前,首先需要对机床进行初始设置。这包括机床的水平调整、电源连接和控制系统的基本配置。正确的初始设置是确保加工精度和机床安全运行的前提。

2401_87715305的博客 841

HDU1242:Rescue(BFS+优先队列)

Problem Description Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M Angel's friends want to save Angel. Their task is: approach Angel. W

ACM!荣耀之路! 8450

Arduino与Proteus仿真实例-HG7881(L9110)驱动直流电机仿真

HG7881(L9110)驱动直流电机仿真 HG7881 (L9110) 双通道电机驱动器模块。 HG7881 (L9110) 是一款紧凑型电机驱动芯片,支持 2.5-12V 电压范围,800mA 连续电流。 这些芯片具有内置输出钳位二极管以保护敏感的微控制器电子设备。 它们适用于非常小的机器人项目。 每个 HG7881 (L9110) 芯片都能够使用两个数字控制输入驱动单个直流电机。 一个输入用于选择电机方向,而另一个用于控制电机速度。 速度是通过使用 PWM 脉冲宽度调制来控制的。 电机驱动器通常具有

视觉与物联智能 3048

RK356X linux系统移植RTL8723BU模块遇到的坑

RK356X linux系统移植RTL8723BU模块遇到的坑

目前从事linux驱动开发,多交流多学习吧 954

HDOJ1242(BFS)

大意:r是起点,a是终点,遇到x时间加一,求到达最短时间。 分析:BFS水题。。。。 代码: #include #include #include #include using namespace std; int n,m; int next1[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; typedef pairP; char map[205][205]; int

菜鸡 814

YOLO11改进-注意力-引入Deformable Large Kernel Attention (DLKA) 解决多尺度、小目标、遮挡等问题

Deformable Large Kernel Attention (DLKA) 是一种用于视觉任务的注意力机制,旨在提升模型在处理不同尺寸和形状对象时的灵活性和性能。DLKA 的设计灵感源自传统的注意力机制,但通过引入可变形核(deformable kernel)来增强对局部特征的适应能力。

qq_64693987的博客 4042

【hdoj 1242】Rescue

Rescue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 19969 Accepted Submission(s): 7106 Problem Description Angel was caught by the MOLI

nininicrystal的专栏 394

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

杭电 1242 Rescue

题目大意: HDOJ 1242 Rescue 解题思路: BFS( 广度优先搜索) 易错点 1.天使可能有多个朋友,所以不能从朋友的位置开始着天使,只能是从天使找离他最近的朋友 2.题目要求的是找到一个用时最少的朋友,而不是步数最少 代码实现 #include <iostream> #include <stdio.h> #include <string.h> #include <queue> #define N 201 using names

Zqy_123789的博客 243

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HDU/HDOJ 1242 Rescue 典型的迷宫广度优先搜索题

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1242 题目大意:在含有障碍的迷宫中求从一点到一点的最短时间或步数,这个题目有个坑爹的地方,天使的朋友不止一个,所以搜索的起点应该是从天使开始搜到朋友为止,最短路,还有一个坑爹的地方,题目求的是最短时间,不是最短步数,所以应该才用优先队列,小步数优先,结果我两种方法都试过,都能AC; 上代码:187

R_xiaozhu_Q的专栏 1204

hdoj 1242 Rescue 【bfs】

Rescue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 21977    Accepted Submission(s): 7822 Problem Description Angel was caught by

dxx_111的博客 595

HDOJ-1242 Rescue

HDOJ-1242 Rescue BFS以及优先队列

傲娇的晓明 411

HDOJ 1242 Rescue

题意:    n*m的方格中,'#/是墙不可过,'.'是路可过,a代表要救出的     公主,r是出发的friend,x代表守卫,每走一步都需要一单位     的时间,遇到守卫需要额外再消耗一单位的时间,求从r走到a     最短需多少的时间。   分析:     1,要注意从a开始搜索,因为r可能含有多个。开始我是从r搜索到a,     后来wa了很多次。。。最后发现题目中说的是

喵不理 398

hdoj 1242 Rescue

http://acm.hdu.edu.cn/showproblem.php?pid=1242 //搜索题:广度优先搜索 /* 当前格视为节点,其上下左右视为下一层,用广度优先搜索,将每层的节点入队。对已经访 问的格子标记已经访问。节点附带属性为坐标和时间,由于有守卫影响,所以同一个格子可 能出现不同的时间属性,故将守卫的格子视为两层,对守卫的格子进行标记,以确定是否为 第一次访问将其入队两次。最

—— 然 之 858

hdoj1242 Rescue

题意:  这道题是常规的BFS,加上了一个”打怪”的设置,而”打怪”实质上就是步数加1的操作罢了.如果用的是queue而不是priority_queue,(我觉得用queue就可以了),得维持”访问的节点的步数递增”这样一个原则,也就是:   如果当前位置是”x”即guard的时候,要打到guard,具体代码中的操作是:   (1)新增加一个该位置的节点push进queue,其中该节点的步数要增

VitaLemon__的专栏 607

hdoj 1242 宽度优先

题目大意:有一个人关在监狱里,他有很多个朋友要去救他,求这些朋友救到他花费的最短时间,碰到警卫,他们就杀死警卫,要花费两个时间值 解题思路:看到最短消耗时间,想到了bfs,有因为有多个朋友r去解救Angel,所以想到以Angel的位置为起点,bfs求到任意一个朋友的位置花费最小的时间,之前直接就这么用bfs结果错了,忽略了碰到警卫是花费两个时间值,而直接走只花费一个时间值,所以还得改造下。用一个

涛涛不解 1038

广度优先搜索nodeHDU/HDOJ 1242 Rescue 典型的迷宫广度优先搜索题

这几周一直在研究广度优先搜索node之类的问题,下午正好有机会和大家讨论一下.     题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1242     题目粗心:在含有障碍的迷宫中求从一点到一点的最短时光或步数,这个题目有个坑爹的地方,天使的友人不止一个,所以搜索的起点应该是从天使开始搜到友人为止,最短路,还有一个坑爹的地方,题目求的是最短时光,...

weixin_34001430的博客 204

hdoj1242bfs入门

#include #include #include #include #include int d[210][210]; using namespace std; const int inf=0x7fffffff; char field[210][210]; int n,m,sx,sy; int fx[4]={0,0,-1,1}; int fy[4]={1,-1,0,0}; struct pos

山月记 932

hdoj1242-【Rescue】

Rescue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 27091    Accepted Submission(s): 9593 Problem Description Angel was caught by th

有梦的博客 410
下一篇: STL 优先队列、队列、栈的使用
WellerZhao
博客等级 码龄15年 11粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值