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的更多相关文章
随机推荐
- FaceBook开源库Fresco
讨论学习使用 关于 Fresco Fresco 是一个强大的图片载入组件. Fresco 中设计有一个叫做 image pipeline 的模块.它负责从网络.从本地文件系统.本地资源载入图片. 为了 ...
- HDU 1226 超级password
跟POJ 1465 multiple 类是.仅仅只是多了2个条件,长度不能超过500.还有就是 可能不是十进制. bfs+同余定理,就是用 mod 来判重. G++ 15ms 每次枚举一位,然后记录下 ...
- C++对象模型——指向Member Function的指针 (Pointer-to-Member Functions)(第四章)
4.4 指向Member Function的指针 (Pointer-to-Member Functions) 取一个nonstatic data member的地址,得到的结果是该member在 cl ...
- 获取Linux磁盘分区的UUID
在设置fstab自动挂载时,需要填写如下的信息: # <file system> <mount point> <type> <options> < ...
- ZOJ 3876 May Day Holiday 蔡勒公式
H - May Day Holiday Description As a university advoc ...
- HDU4403 A very hard Aoshu problem DFS
A very hard Aoshu problem Time Limit: 2000/1000 MS (Java/Others) Memory ...
- 动态代理3--Spring AOP分析
Spring AOP的基本实现方式 Spring AOP,一种模块化机制,能够动态的对切点添加行为,而不破坏原有的代码结构. 这是一个非常好地动态代理的应用方式.Spring AOP实现依赖于JDK ...
- go5--数组
package main /* 数组Array 定义数组的格式:var <varName> [n]<type>,n>=0 数组长度也是类型的一部分,因此具有不同长度的数组 ...
- Swing手动进行最大化最小化
首先jdk的setExtendedState是有bug的,需要先重载JFrame的setExtendedState方法 /** * Fix the bug "jframe undecorat ...
- JLabel作为展现元素时需要注意的事项
如果没有内容,JLabel默认透明就无法作为点击区域了,所以为了让其可以响应鼠标事件需要设置 setOpaque(true) 这样就可以响应鼠标事件了 (吐槽一下,多年以前在大学做个web地图导航的网 ...