POJ 2251宽搜、
因为这个题做了两次犯了两次不同的错误、
第一次用的dfs死活都超时
第二次把定义队列定义在了全局变量的位置,导致连WA了几次、最后找到原因的我真的想一巴掌拍死自己
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int qq=;
int vis[qq][qq][qq];
char map[qq][qq][qq];
int tz,ty,tx,k,n,m,sx,sy,sz;
int dir[][]={-,,,,,,,-,,,,,,,,,,-};
struct point{
int a,b,c;
int step;
};
int check(int z,int y,int x)
{
if(z<||y<||x<||z>=k||y>=n||x>=m||vis[z][y][x]||map[z][y][x]=='#')
return ;
return ;
}
void bfs()
{
queue<point>Q; //就是这个定义队列放在了bfs函数外、导致我WA了很多次特地来提醒自己
memset(vis,,sizeof(vis)); //在写宽搜的时候一定不要犯同样的错误了、
point now,ans;
now.step=;now.a=sz;now.b=sy;now.c=sx;
vis[sz][sy][sx]=;
Q.push(now);
while(!Q.empty()){
ans=Q.front();
Q.pop();
if(ans.a==tz&&ans.b==ty&&ans.c==tx){
printf("Escaped in %d minute(s).\n",ans.step);
return;
}
for(int i=;i<;++i){
now.a=ans.a+dir[i][];
now.b=ans.b+dir[i][];
now.c=ans.c+dir[i][];
if (check(now.a,now.b,now.c))
{
now.step=ans.step+;
vis[now.a][now.b][now.c]=;
Q.push(now);
}
}
}
printf("Trapped!\n");
return;
}
int main()
{
while(~scanf("%d %d %d%*c",&k,&n,&m)&&k)
{
for(int i,j,l=;l<k;++l){
for(j=;j<n;++j){
for(i=;i<m;++i){
map[l][j][i]=getchar();
if (map[l][j][i]=='S'){
sx=i;sy=j;sz=l;
}
else if (map[l][j][i]=='E'){
tx=i;ty=j;tz=l;
}
}
getchar();
}
getchar();
}
bfs();
}
return ;
}
做搜索题目一定要思路清晰、然后是代码的意义要明白的透彻
POJ 2251宽搜、的更多相关文章
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 【BFS】POJ 2251
POJ 2251 Dungeon Master 题意:有一个地图,三维,走的方向是上下,左右,前后.问你最小步数从起始点走到出口. 思路:三维的BFS,就是多加一组状态,需要细心(不细心如我就找了半个 ...
- 利用深搜和宽搜两种算法解决TreeView控件加载文件的问题。
利用TreeView控件加载文件,必须遍历处所有的文件和文件夹. 深搜算法用到了递归. using System; using System.Collections.Generic; using Sy ...
- POJ1426 Find The Multiple (宽搜思想)
Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 24768 Accepted: 102 ...
- Colorado Potato Beetle(CF的某道) & 鬼畜宽搜
题意: 一个人在一张大图上走,给你路径与起点,求他走出的矩形面积并.(大概这个意思自行百度标题... SOL: 与其说这是一道图论题不如说是一道生动活泼的STL-vector教学.... 离散化宽搜, ...
- POJ 2251 Dungeon Master --- 三维BFS(用BFS求最短路)
POJ 2251 题目大意: 给出一三维空间的地牢,要求求出由字符'S'到字符'E'的最短路径,移动方向可以是上,下,左,右,前,后,六个方向,每移动一次就耗费一分钟,要求输出最快的走出时间.不同L层 ...
- BZOJ_1615_[Usaco2008_Mar]_The Loathesome_Hay Baler_麻烦的干草打包机_(模拟+宽搜/深搜)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1615 一个主动轮带着一些轮子转,轮子带着轮子转,轮子带着轮子转...一个非主动轮只会被一个轮子 ...
- 【宽搜】ECNA 2015 D Rings (Codeforces GYM 100825)
题目链接: http://codeforces.com/gym/100825 题目大意: 给你一张N*N(N<=100)的图表示一个树桩,'T'为年轮,'.'为空,求每个'T'属于哪一圈年轮,空 ...
- 【宽搜】ECNA 2015 E Squawk Virus (Codeforces GYM 100825)
题目链接: http://codeforces.com/gym/100825 题目大意: N个点M条无向边,(N<=100,M<=N(N-1)/2),起始感染源S,时间T(T<10) ...
随机推荐
- NSURLSessionDownloadTask的深度断点续传
http://www.cocoachina.com/ios/20160503/16053.html 本文为投稿文章,作者:WeiTChen 对于后台下载与断点续传相信大家肯定不会陌生,那么如果要同时实 ...
- SDUT-3379_数据结构实验之查找七:线性之哈希表
数据结构实验之查找七:线性之哈希表 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 根据给定的一系列整数关键字和素数p, ...
- KNN最近邻算法
算法概述 K最近邻(K-Nearest Neighbor,KNN)算法,是著名的模式识别统计学方法,在机器学习分类算法中占有相当大的地位.它是一个理论上比较成熟的方法.既是最简单的机器学习算法之一,也 ...
- 【JZOJ4791】【NOIP2016提高A组模拟9.21】矩阵
题目描述 在麦克雷的面前出现了一个有n*m个格子的矩阵,每个格子用"."或"#"表示,"."表示这个格子可以放东西,"#" ...
- SQLServer数据库(二)
数据库设计:就是将数据库中的数据库实体及这些数据库实体之间的关系,进行规划和结构化的过程. 项目开发过程: 需求分析 概要设计 详细设计 代码编写 运行测试 打包发行 数据库的系统分析基本步骤:收集信 ...
- Directx教程(23) 简单的光照模型(2)
原文:Directx教程(23) 简单的光照模型(2) 在工程myTutorialD3D11_16中,我在文件light.vs中定义了一个材质光源属性常量缓冲. //const buffer最好 ...
- 2018-8-14-解决-VS-跳转定义和-Resharper-重复
title author date CreateTime categories 解决 VS 跳转定义和 Resharper 重复 lindexi 2018-8-14 17:35:6 +0800 201 ...
- 洛谷2591BZOJ2298 problem a题解
题目连接 bz链接 我们发现,如果一个人有ai个分数比他高的人,有bi个分数比他低的人 那么按照分数排序后,区间[ai+1,n-bi]中的人分数便是相同的 这样就将一个人转化为一个区间 也许有很多人的 ...
- 阿里小二的日常工作要被TA们“接管”了!
昨天有人偷偷告诉我说 阿里巴巴其实是一家科技公司! 我想了整整一夜 究竟是谁走漏了风声 那么重点来了,阿里到底是如何在内部的办公.生活中,玩转“黑科技”的呢? AI取名:给你专属的“武侠”花名 花名是 ...
- 【C++】判断一个图是否有环 无向图 有向图(转载)
没有找到原文出处,请参考一下链接: http://www.cnblogs.com/hiside/archive/2010/12/01/1893878.html http://topic.csdn.ne ...