hdu1242 Rescue

2024-05-06 22:58
文章标签 rescue hdu1242

本文主要是介绍hdu1242 Rescue,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/............................................................................................................................................................................................\

题目解析:从起始点a开始寻找到r的最短的路径,在最短的路径上如果遇到x,可以花一秒的时间将x杀死,然后通过

                   解这一题可以用bfs,通过队列一步步的寻找,入队,出队,直到找到r输出用的时间的最小值,或者找  

                  不到。(应该是bfs的简单点的题目吧)。

\............................................................................................................................................................................................/






#include<stdio.h>
#include <iostream>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
#include<list>
#include<vector>
#include<cstdlib>
#include<cstdio>
#include <queue>
#pragma comment(linker,"/STACK:102400000,102400000")
using namespace std;
#define MAX 201
char map[MAX][MAX];
int mark[MAX][MAX];
int si,sj,n,m,flag;struct node
{int x;int y;int step;
} point;int dir[4][2]= {{-1,0},{1,0},{0,-1},{0,1}};  /*控制方向*/void bfs()
{queue<node>q;/*定义队列*/node t,c;int k;point.x=si;point.y=sj;point.step=0;mark[si][sj]=1;/*标记走过的路*/flag=0;q.push(point);/*入队列的起始点*/while(!q.empty())/*判断队列是否为空,队列不为空*/{c=q.front();/*取队头元素*/q.pop();/*队头元素出队*/if(map[c.x][c.y]=='x')/*遇到兵,时间加1*/{c.step++;map[c.x][c.y]='.';q.push(c);}else{for( k=0; k<4; k++)/*扫描四周,寻找路径*/{t.x=c.x+dir[k][0];t.y=c.y+dir[k][1];t.step=c.step+1;if(map[t.x][t.y]!='#'&&mark[t.x][t.y]==0&&t.x>0&&t.y>0&&t.x<=n&&t.y<=m)/*判别方向*/{if(map[t.x][t.y]=='a')/*找到天使,就输出*/{printf("%d\n",t.step);flag=1;return ;}/*如果没有找到,将点入队继续寻找*/mark[t.x][t.y]=1;q.push(t);}}}}if(!flag)/*没有找到,而且也没有路课走*/printf("Poor ANGEL has to stay in the prison all his life.\n");
}int main()
{int i,j;freopen("in.txt","r",stdin);while(scanf("%d%d",&n,&m)!=EOF){for(i=1;i<=n;i++)for(j=1;j<=m;j++){cin>>map[i][j];if(map[i][j]=='r')/*找到起始点*/{si=i;sj=j;}mark[i][j]=0;/*初始化标记数组*/}bfs();}return 0;
}



这篇关于hdu1242 Rescue的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/965627

相关文章

Codeforces Round #327 (Div. 1) B. Chip 'n Dale Rescue Rangers

题意 你一开始在 x1 x_1, y1 y_1,你要走到 x2 x_2, y2 y_2,但是这时候有风,风在 t t秒前风速是(vx,vy)(vx,vy)在 t t秒后,风速是(wx,wy)(wx,wy) 你和风的相对速度,最多差距 vmax v_{max},保证 vmax v_{max}大于风速,然后问你,最少什么时候到达 思路: 风当做相对坐标系,那么就可以看做终点加了一个和风相反的速

mondo rescue 备份centos

Mondo Rescue的官方网站: http://www.mondorescue.org/ 下面介绍安装mondo rescure对系统进行备份与恢复 1、在线安装 1)CentOS yum源配置 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repocurl -o /et

HDU 1242 Rescue营救 BFS算法

题目链接:HDU 1242 Rescue营救 Rescue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 16524    Accepted Submission(s): 5997 Problem Descript

关于ubuntu安装之后系统grub被破坏了之后进行修复的总结(error:file not found。 grub rescue)

头几天在电脑上面安装双系统,在安装了windows后安装ubuntu来玩玩,结果当我把ubuntu安装成功的时候,从新启动电脑出现了如下的界面:Grub loading!welcome to Grub!error :file not found!  Entering rescure mode>当出现上面的情况的时候我上网查资料知道了是grub被破坏了,花了很长的时间最终把这个问题解决了,下面贴出

Mondo Rescue安装

原文链接:http://blog.csdn.net/yang1982_0907/article/details/17013185 Mondo Rescue是一个开源免费的故障恢复和备份工具,用户可以轻松地创建系统的完整(Linux或Windows)克隆或备份的ISO镜像,可以将这些镜像存放在CD、DVD、磁带、USB设备、硬盘和NFS上。Mondo Rescue还可以用来快速恢复或者重新部署工作

BFS(搜索) (优先队列 ) HDU1242 Rescue

题面: 天使被MOLIGPY抓住了!他被Moligpy监禁。监狱被描述为N * M(N,M <= 200)矩阵。监狱里有WALL,ROAD和GUARD。 天使的朋友想要拯救天使。他们的任务是:接近天使。我们假设“接近天使”是为了到达Angel所在的位置。当网格中有一名后卫时,我们必须杀死他(或她?)才能进入网格。我们假设我们向上,向下,向右,向左移动需要1个单位时间,并且杀死一个守卫也需要1个单

grub rescue模式下启动并修复

今天再次遇到grub修复问题,以前也遇到过一次。 我装的ubuntu 10.04和window 7的双系统,默认的系统启动项是Ubuntu。因为第一次装Ubuntu的时候只划了15G(对于长期使用Linux的人来说 o(∩∩)o...知道很小啦),于是就直接在windows系统下把装Ubuntu的那个分区删除了~~这下。。惨了,windows系统启动不起来了~~grub又不会修复,在网上找的

hud 1242 Rescue

这道题是一道广度的裸题,套模版,最重要的是要比较距离的大小,因为这道题中不是移动每个点都是1,当遇到的是狱警'x'的时候距离要+2,因此可能出现移动次数多但是移动距离小的可能,所以要加上比较 used[xx][yy] = true; if(map[xx][yy] == 'x') if(step[xx][yy] > step[x1][y1]+2) step[xx][yy] = ste

hdu 1242 Rescue(BFS+优先队列)

起初只是用DFS做,但后来发现问题太多了,起点是一个,但可能有多个士兵,要找到最小的距离即要求每一个子问题的结果都是最小值。用深度优先搜索自然不能每次都返回较小值。而广度优先搜索就像使用了分身术一样,4个方向都有friend去找angel,各自返回自己的最小值,所以思路就是BFS+优先队列。 <pre name="code" class="cpp"><pre name="code" clas

CentOs 7.3 —— 使用rescue找回被删除的系统文件

一 、 先做个破坏 删除一个很多命令都用的库文件 1.找到动态库文件 —— ldd (man ldd)ldd invokes the standard dynamic linker,which causes the linker to display the library dependencies. 在通常情况下,ldd调用标准动态链接器,使链接器显示库依赖项。找到命令依赖的**