Nightmare(搜索)
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(搜索)的更多相关文章
- kuangbin专题 专题二 搜索进阶 Nightmare Ⅱ HDU - 3085
题目链接:https://vjudge.net/problem/HDU-3085 题意:有两个鬼和两个人和墙,鬼先走,人再走,鬼每走过的地方都会复制一个新鬼, 但新鬼只能等待旧鬼走完一次行程之后,下一 ...
- e2e测试之Nightmare
一.e2e测试简介 e2e或者端到端(end-to-end)或者UI测试是一种测试方法,它用来测试一个应用从头到尾的流程是否和设计时候所想的一样.简而言之,它从一个用户的角度出发,认为整个系统都是一个 ...
- HDUOJ-----(1072)Nightmare(bfs)
Nightmare Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- 步步为营(十六)搜索(二)BFS 广度优先搜索
上一篇讲了DFS,那么与之相应的就是BFS.也就是 宽度优先遍历,又称广度优先搜索算法. 首先,让我们回顾一下什么是"深度": 更学术点的说法,能够看做"单位距离下,离起 ...
- HDU1072:Nightmare [DFS]
题目链接:Nightmare 题意: 给出一张n*m的图,0代表墙,1代表可以走,2代表起始点,3代表终点,4代表炸弹重置点 问是否能从起点到达终点 分析: 一道很好的DFS题目,炸弹重置点必然最多走 ...
- Nightmare Ⅱ(双向BFS)
Problem Description Last night, little erriyue had a horrible nightmare. He dreamed that he and his ...
- 爬虫的终极形态:nightmare
爬虫的终极形态:nightmare nightmare 是一个基于 electron 的自动化库(意思是说它自带浏览器),用于实现爬虫或自动化测试.相较于传统的爬虫框架(scrapy/pyspider ...
- SQLSERVER走起微信公众帐号已经开通搜狗微信搜索
SQLSERVER走起微信公众帐号已经开通搜狗微信搜索 请打开下面链接 http://weixin.sogou.com/gzh?openid=oIWsFt-hiIb_oYqQHaBMoNwRB2wM ...
- solr_架构案例【京东站内搜索】(附程序源代码)
注意事项:首先要保证部署solr服务的Tomcat容器和检索solr服务中数据的Tomcat容器,它们的端口号不能发生冲突,否则web程序是不可能运行起来的. 一:solr服务的端口号.我这里的sol ...
随机推荐
- 浅谈Android系统的图标设计规范
http://homepage.yesky.com/89/11620089.shtml 目前移动平台的竞争日益激烈,友好的用户界面可以帮助提高用户体验满意度,图标Icon是用户界面中一个重要的组成部分 ...
- angularjs modal 嵌套modal的问题
anguarjs中当遇到modal嵌套modal的时候,比如一个modal弹出啦一个modal1,关闭modal1后,modal本身的关闭功能失效,那么需要$modal来生命弹出的modal1并且关闭 ...
- Intellij Idea 13 vmoptions (Mac版本)
-ea -server -Xms1g -Xmx1g -Xss16m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DoEscapeAnalysis -XX:+ ...
- C# Chart圖標綁定
开发软件为VS2010 免去了安装插件之类的麻烦. 最终效果图: 饼状图: 前台设置:设置参数为: :Titles, 添加一个序列,在Text中设置名字. :Series ,添加一个序列,选择Char ...
- 图的遍历(bfs 和dfs)
BFS的思想: 从一个图的某一个顶点V0出发,首先访问和V0相邻的且未被访问过的顶点V1.V2.……Vn,然后依次访问与V1.V2……Vn相邻且未被访问的顶点.如此继续,找到所要找的顶点或者遍历完整个 ...
- windows core audio apis
这个播放流程有一次当初不是很理解,做个记录,代码中的中文部分,原文档是有解释的:To move a stream of rendering data through the endpoint buff ...
- 初探grunt.js
package.js { "name": "ttd_v3", "version": "0.1.0", "aut ...
- photoshop cc 版本安装失败解决办法
好久没有碰ps,看了下在ps版本都到cc了.忍不住也想尝试最新版本,但是安装出现了很多问题,导致我花了很多时间才搞定,现在分享给大家几点经验吧. Exit Code: Please see speci ...
- C#/.NET整数的三种强制类型转换(int)、Convert.ToInt32()、int.Parse()的区别
这三种方式都是强制把内容转换为整数,但他们之间是有区别的,如下: 一.(int)适合简单数据类型之间的转换,C#的默认整型是int32(不支持bool型). 二.int.Parse(string sP ...
- js 代码记录
window.screen.availWidth 返回当前屏幕宽度(空白空间) window.screen.availHeight 返回当前屏幕高度(空白空间) window.screen.width ...