题目链接:Nightmare

题意:

给出一张n*m的图,0代表墙,1代表可以走,2代表起始点,3代表终点,4代表炸弹重置点

问是否能从起点到达终点

分析:

一道很好的DFS题目,炸弹重置点必然最多走一次,可能会陷入无限递归,故有一个重要的剪枝,见代码,

此题采用记忆化搜索(不懂の),注意代码的设计思路

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; int t,n,m,a[][],step[][],T[][],sx,sy,ex,ey,cnt,d[][]={,-,-,,,,,}; void dfs(int x,int y,int ste,int time)
{
if(time==) return ;
if(a[x][y]==) {cnt=min(ste,cnt);return ;}
if(a[x][y]==) time=;
if(ste>=step[x][y]&&time<=T[x][y]) return ;
step[x][y]=ste,T[x][y]=time;
for(int i=;i<;++i)
{
int xx=x+d[i][],yy=y+d[i][];
if(xx>n||yy>m||xx<||yy<||a[xx][yy]==) continue;
//if(step[x][y]<(step[xx][yy]-1)&&T[x][y]>(T[xx][yy]+1)) continue;
dfs(xx,yy,ste+,time-);
}
} int main()
{
for(scanf("%d",&t);t--;)
{
scanf("%d %d",&n,&m);
for(int i=;i<=n;++i)for(int j=;j<=m;++j)
{
scanf("%d",&a[i][j]);
if(a[i][j]==) sx=i,sy=j;
if(a[i][j]==) ex=i,ey=j;
step[i][j]=0x3f3f3f3f,T[i][j]=;
}
cnt=0x3f3f3f3f;
dfs(sx,sy,,);
if(cnt==0x3f3f3f3f) puts("-1");else printf("%d\n",cnt);
}
return ;
}

HDU1072:Nightmare [DFS]的更多相关文章

  1. HDU-1072 Nightmare (bfs+贪心)

    Nightmare Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Sub ...

  2. HDU1072 Nightmare(BFS) 2016-07-24 14:02 40人阅读 评论(0) 收藏

    Nightmare Problem Description Ignatius had a nightmare last night. He found himself in a labyrinth w ...

  3. HDU1072:Nightmare

    传送门 题意 给出一张n*m的图 0.墙 1.可走之路 2.起始点 3.终点 4.时间重置点 问是否能到达终点 分析 我的训练专题第一题,一开始我设个vis数组记录,然后写炸,不能处理重置点根vis的 ...

  4. Nightmare(DFS)

    Nightmare    hdu1072 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  5. BFS、DFS ——J - Nightmare

    J - Nightmare Ignatius had a nightmare last night. He found himself in a labyrinth with a time bomb ...

  6. hdu1072(Nightmare)bfs

    Nightmare Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  7. Nightmare HDU1072

    非常标准的BFS 第一次写错了很多 1.到达4时设置为墙就好了  避免了死循环 2.不用开d数组   在结构体里面就行了 3.结构体初始化函数的写法: Node(int x=0,int y=0,int ...

  8. CF453C Little Pony and Summer Sun Celebration (DFS)

    http://codeforces.com/contest/456  CF454E Codeforces Round #259 (Div. 1) C Codeforces Round #259 (Di ...

  9. HDUOJ-----(1072)Nightmare(bfs)

    Nightmare Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

随机推荐

  1. idea-自定义Java模板文件

    自定义 idea Java 模板步骤. #parse("File Header.java")表示引用的模板文件,如下:

  2. 介绍 JSON的

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Lan ...

  3. hdu 4819 Mosaic

    无论是线段树还是树状数组维护最大值最小值的时候一定要注意,如果有修改操作的话,这个最小值和最大值的更新一定不能由原来的和修改的值得到,一定要重新查询一次,否则可能出现当前最小值是原来的未修改值,但事实 ...

  4. jmeter的线程组执行顺序不以其出现的顺序发生变化

    jmeter可以同时配置多个线程组,那么他们的执行顺序是什么呢?和他们出现的顺序有什么关系呢? 先说下几个特殊的线程组:tearDown线程组和setUp线程组,tearDown线程组一定在最后执行, ...

  5. 百亿级企业级 RPC 框架开源了!

    今天给大家介绍给一款性能卓越的 RPC 开源框架,其作者就是我推荐每个 Java 程序员都应该看的<Java 生态核心知识点整理>的原作者张玉龙. 说实话我第一次看到这个资料的时候,就感觉 ...

  6. 如何在 Linux 环境下配置 Nagios Remote Plugin Executor (NRPE)

    为 NRPE 配置自定义命令 远程服务器上安装 下面列出了一些可以用于 NRPE 的自定义命令.这些命令在远程服务器的 /etc/nagios/nrpe.cfg 文件中定义. ## 当 1.5.15 ...

  7. Android双向seekbar(带刻度)

    ※效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/disso ...

  8. export setenv

    bash export LD_LIBRARY_PATH="../third_party/lib:$LD_LIBRARY_PATH" csh setenv LD_LIBRARY_PA ...

  9. jquery获取input值的各种情况

    jQuery获取多种input值的方法 获取input的checked值是否为true: 第一种: if($("input[name=item][value='val']").at ...

  10. getifaddrs

    getifaddrs 获取本地网络接口的信息.在路由器上可以用这个接口来获取wan/lan等接口当前的ip地址,广播地址等信息. #include <sys/types.h> #inclu ...