http://acm.hdu.edu.cn/showproblem.php?pid=1072

/*
题意:
迷宫内有入口和出口 在6分钟结束后炸弹会爆炸,但是迷宫内有重置炸弹的装置,可以重置炸弹的时间重新为6分钟
2代表入口,3代表出口 0代表墙 1代表路4代表重置炸弹的装置,每移动一步花费一分钟
求 走出迷宫的 最少移动步数 若不能走出迷宫输出-1;

分析:
与以往做的搜索题目有点不一样 此题可以走已经走过的路线 例如:直接走不能到达出口,但是旁边有一个4 可以先去走4增加时间 再回头接着走
这样时间增加了,

*/重生的一题

include

include

using namespace std;
int miGong[10][10];
int dir[4][2]={0,1,1,0,0,-1,-1,0};
struct node
{
int x;
int y;
int time;
int s;
};
int bfs(int startX,int startY,int m,int n)
{
queue q;
node a;
a.x=startX;
a.y=startY;
a.s=0;
a.time=6;
q.push(a);
while(q.size())
{
a=q.front();
q.pop();
if(miGong[a.x][a.y]==3)return a.s;//走到出口了
if(a.time==1)continue;//因为如果是在零时走到出口也会爆炸,逃亡失败
for(int i=0;i<4;i++)
{
int tx=a.x+dir[i][0];
int ty=a.y+dir[i][1];
if(tx<1||tx>m||ty<1||ty>n)
continue;
if(miGong[tx][ty]!=0)
{
node b;
b.x=tx;
b.y=ty;
b.s=a.s+1;
if(miGong[tx][ty]==4)//重置炸弹的这一步不能重复走,因为这是一次性的,用过一次就不能再用了
{ //如果走了这一步增加时间尚不能到达出口,那么第二次走的时候不能增加时间更不能到达出口了
b.time=6;
miGong[tx][ty]=0;
}
else b.time=a.time-1;
q.push(b);
}
}

}
return -1;

}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int m,n;
int startX,startY;
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&miGong[i][j]);
if(miGong[i][j]==2)
{
startX=i;
startY=j;
}
}
printf("%d\n",bfs(startX,startY,m,n));
}
}

Nightmare(搜索)的更多相关文章

  1. kuangbin专题 专题二 搜索进阶 Nightmare Ⅱ HDU - 3085

    题目链接:https://vjudge.net/problem/HDU-3085 题意:有两个鬼和两个人和墙,鬼先走,人再走,鬼每走过的地方都会复制一个新鬼, 但新鬼只能等待旧鬼走完一次行程之后,下一 ...

  2. e2e测试之Nightmare

    一.e2e测试简介 e2e或者端到端(end-to-end)或者UI测试是一种测试方法,它用来测试一个应用从头到尾的流程是否和设计时候所想的一样.简而言之,它从一个用户的角度出发,认为整个系统都是一个 ...

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

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

  4. 步步为营(十六)搜索(二)BFS 广度优先搜索

    上一篇讲了DFS,那么与之相应的就是BFS.也就是 宽度优先遍历,又称广度优先搜索算法. 首先,让我们回顾一下什么是"深度": 更学术点的说法,能够看做"单位距离下,离起 ...

  5. HDU1072:Nightmare [DFS]

    题目链接:Nightmare 题意: 给出一张n*m的图,0代表墙,1代表可以走,2代表起始点,3代表终点,4代表炸弹重置点 问是否能从起点到达终点 分析: 一道很好的DFS题目,炸弹重置点必然最多走 ...

  6. Nightmare Ⅱ(双向BFS)

    Problem Description Last night, little erriyue had a horrible nightmare. He dreamed that he and his ...

  7. 爬虫的终极形态:nightmare

    爬虫的终极形态:nightmare nightmare 是一个基于 electron 的自动化库(意思是说它自带浏览器),用于实现爬虫或自动化测试.相较于传统的爬虫框架(scrapy/pyspider ...

  8. SQLSERVER走起微信公众帐号已经开通搜狗微信搜索

    SQLSERVER走起微信公众帐号已经开通搜狗微信搜索 请打开下面链接 http://weixin.sogou.com/gzh?openid=oIWsFt-hiIb_oYqQHaBMoNwRB2wM ...

  9. solr_架构案例【京东站内搜索】(附程序源代码)

    注意事项:首先要保证部署solr服务的Tomcat容器和检索solr服务中数据的Tomcat容器,它们的端口号不能发生冲突,否则web程序是不可能运行起来的. 一:solr服务的端口号.我这里的sol ...

随机推荐

  1. vs2013下的WCFRest 模板开发WCF

    在vs2013下使用wcfRestservice40 是安装不成功的,尝试多遍,都是这样.查看以前vs2012做的wcfrest,经过调教,终于在vs2013下也可以了! 1.新建wcf服务应用程序 ...

  2. SQL Server Management Studio的对象资源管理器的使用

    1.查看 2.对象资源管理器 3.点到某个表的身上 4.出现以下图片,因为有时动态创建的触发器,刷新表下面的触发器可能不出来,所以来这里面找

  3. asp.net 批量下载实现(打包压缩下载)

    1.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default ...

  4. 在window系统下配置login.sql

    在window系统下配置login.sql 他的位置是登录用户的文件夹,我的win7系统位置是: C:\Users\Administrator 我的login.sql下载地址: http://file ...

  5. iOS支付 IPAPayment demo iTunes Conection里面添加测试帐号,添加商品,实现购买过程

    https://github.com/ccguo/IAPPaymentDemo 发一个demo

  6. Xaml中的资源(1 样式)

    <Window x:Class="MyResoures.MainWindow" xmlns="http://schemas.microsoft.com/winfx/ ...

  7. VisualStudio2013内置SQLServer入门(二)--增删改查

    前一篇 http://www.cnblogs.com/qixi233/p/4766451.html 这篇是sqlserver的操作 界面比较走心哈哈哈,将就着看,主要就是下面增删改查四个btn 对于s ...

  8. Windows 8 / 8.1 禁用驱动签名最详细图文教程

    Windows 8 鼠标右上角/右下角弹出边栏,选择“设置” 点击“更改电脑设置”: 选择“常规”,右侧拖到底,点击“高级启动”-“立即重启”: 稍后进入恢复页面,选择“疑难解答” 进入疑难解答后,选 ...

  9. javascript——面向对象程序设计(2)

    <script type="text/javascript"> //1.理解原型对象 //2.原型与in操作符 //3.更简单的原型语法 //4.原型的动态性 //5. ...

  10. python3 读取大文件分解成若干小文件

    有个数据实在太大了,有1.7G,打开慢,改文件也慢,我们将其分解成若干个中等文件 #!/usr/bin/env python3 # -*- coding: utf-8 -*-   f = open(& ...