HDU_1242_Rescue
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1242
大意:迷宫搜索,'#'代表墙,'.'代表路,'x'代表守卫,每移动1格用1秒,杀死守卫用1秒,angel('a'表示)的朋友们(用'r'表示),要去救她,问最短时间为多少?
分析:迷宫搜索,dfs
总结:注意读题,之前做的时候以为只有一个朋友,其实有多个,所以用'a'去找'r'比较方便。注意输入,之前输入也有错误。
代码:
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
using namespace std;
#define N 205
#define INF 0x7ffffff int n,m,minx;
int ex,ey;
char map[N][N];
bool vis[N][N];
int dir[][]= {{-,},{,},{,},{,-}}; bool inside(int x,int y)
{
if(x>=&&x<m&&y>=&&y<n)
return ;
return ;
} void dfs(int x,int y,int time)
{
if(map[x][y]=='r')
{
if(time<minx)
minx=time;
return;
}
if(map[x][y]=='#')
return;
if(time>minx)
return;
if(!inside(x,y))
return;
if(vis[x][y])
return;
vis[x][y]=;
for(int i=; i<; i++)
{
int mx=x+dir[i][];
int my=y+dir[i][];
if(map[mx][my]=='x')
dfs(mx,my,time+);
else
dfs(mx,my,time+);
}
vis[x][y]=;
} int main()
{
int sx,sy;
while(scanf("%d%d",&m,&n)!=EOF)
{
memset(vis,,sizeof(vis));
minx=INF;
for(int i=;i<m;i++)
scanf("%s",map[i]);
for(int i=; i<m; i++)
for(int j=; j<n; j++)
if(map[i][j]=='a')
{
sx=i;
sy=j;
}
//for(int i=0; i<m; i++)
// printf("%s\n",map[i]);
dfs(sx,sy,);
if(minx==INF)
printf("Poor ANGEL has to stay in the prison all his life.\n");
else
printf("%d\n",minx);
}
return ;
}
HDU_1242_Rescue的更多相关文章
随机推荐
- 合并小图片利器TexturePacker GUI
合并小图片,能够非常大的节省网络开销.尤其如今的站点非常喜欢使用大量的小图标来做一些友好提示.当然使用图片文字也是一种选择. 只是这里推荐的是TexturePacker GUI ,这个确实是一款利器. ...
- SSL和SSH的差别
有人说,SSH通常是用来提供安全的登录用的.SSL仅仅是一个在协议层中增加的一层用来提供安全. SSH工作在TCP之上,能够在启动一个SSH应用后.在其通道里执行其他协议的应用.如邮件. ...
- ps图片怎样实现渐变
首先我先将一副图片展示给大家: 我所做的效果是想把图片做成渐变.而不改变中间图片的颜色效果. 接下来我来说明一下我的所做思路. 首先将图片中间部分选择出来.然后复制成一个图层. 详细操作是用魔棒进行反 ...
- POJ1228 Grandpa's Estate 稳定凸包
POJ1228 转自http://www.cnblogs.com/xdruid/archive/2012/06/20/2555536.html 这道题算是很好的一道凸包的题吧,做完后会加深对凸包的 ...
- Java多线程 -- 正确使用Volatile变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”:与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少, ...
- 深入理解JMM(Java内存模型) --(五)锁
锁的释放-获取建立的happens before 关系 锁是Java并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息. 下面是锁释放-获取的示例代 ...
- mysql数据库中的十进位是什么意思?
一般在用小数的时候才有用,比如类型你设置了double,十进位你设为2,那么你可以放0.22的值,但是放0.222的值它会自动四舍五入为0.22,相当于小数位数吧
- http-2.2
HTTP-2.2 httpd 配置文件的组成: grep "Section" /etc/httpd/conf/httpd.conf ### Section 1: Global En ...
- bzoj 1657: [Usaco2006 Mar]Mooo 奶牛的歌声【单调栈】
先考虑只能往一边传播,最后正反两边就行 一向右传播为例,一头牛能听到的嚎叫是他左边的牛中与高度严格小于他并且和他之间没有更高的牛,用单调递减的栈维护即可 #include<iostream> ...
- wamp集成环境下帝国备份出错
我在本地wamp环境下面使用帝国备份王时,报错信息如下: Parse error: syntaxerror, unexpected $end in D:wampwwwhuifuclassfunctio ...