http://acm.fzu.edu.cn/problem.php?pid=2285

Problem Description

洪尼玛今天准备去寻宝,在一个n*n (n行, n列)的迷宫中,存在着一个入口、一些墙壁以及一个宝藏。由于迷宫是四连通的,即在迷宫中的一个位置,只能走到与它直接相邻的其他四个位置(上、下、左、右)。现洪尼玛在迷宫的入口处,问他最少需要走几步才能拿到宝藏?若永远无法拿到宝藏,则输出-1。

 Input

多组测试数据。

每组数据输入第一行为正整数n,表示迷宫大小。

接下来n行,每行包括n个字符,其中字符'.'表示该位置为空地,字符'#'表示该位置为墙壁,字符'S'表示该位置为入口,字符'E'表示该位置为宝藏,输入数据中只有这四种字符,并且'S'和'E'仅出现一次。

n≤1000

 Output

输出拿到宝藏最少需要走的步数,若永远无法拿到宝藏,则输出-1。

 Sample Input

5 S.#.. #.#.# #.#.# #...E #....

 Sample Output

7

代码:

#include <iostream>
#include <stdio.h>
#include <queue>
#include <algorithm>
#include <string.h>
#include <cstdio>
using namespace std; int N;
int sx, sy, ex, ey;
char mp[1010][1010];
int vis[1010][1010];
int dx[5] = {0, 1, 0, -1};
int dy[5] = {1, 0, -1, 0}; bool flag = false; void bfs(int x, int y) {
queue<pair<int, int> > q;
pair<int, int> r;
r.first = x;
r.second = y;
q.push(r); while(!q.empty()) {
pair<int, int> p = q.front();
q.pop();
for(int i = 0; i < 4; i ++) {
pair<int, int> now;
now.first = p.first + dx[i];
now.second = p.second + dy[i]; if(vis[now.first][now.second] || now.first < 1 || now.first > N
|| now.second < 1 || now.second > N
|| mp[now.first][now.second] == '#') continue;
vis[now.first][now.second] = vis[p.first][p.second] + 1;
q.push(now);
} if(vis[ex][ey]) {
flag = true;
break;
} }
} int main() { while(~scanf("%d", &N)) {
for(int i = 1; i <= N; i ++)
scanf("%s", mp[i] + 1);
memset(vis, 0, sizeof(vis));
flag=false;
for(int i = 1; i <= N; i ++) {
for(int j = 1; j <= N; j ++) {
if(mp[i][j] == 'S') {
sx = i;
sy = j;
} else if(mp[i][j] == 'E') {
ex = i;
ey = j;
}
}
} bfs(sx, sy);
if(flag) printf("%d\n", vis[ex][ey]);
else printf("-1\n");
}
return 0;
}

  

Problem 2285 迷宫寻宝的更多相关文章

  1. Problem 2285 迷宫寻宝 (BFS)

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=2285 Problem 2285 迷宫寻宝 Accept: 323    Submit: 1247Time Li ...

  2. FZU 2285 迷宫寻宝

    思路: bfs求最短路径. #include<stdio.h> #include<iostream> #include<queue> #include<cst ...

  3. 福州大学第十五届程序设计竞赛_重现赛B题迷宫寻宝

    Problem B 迷宫寻宝 Accept: 52    Submit: 183Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem De ...

  4. nyoj 82 迷宫寻宝(一)

    点击打开链接 迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫 ...

  5. Unity3D实现立体迷宫寻宝

    Unity3D实现立体迷宫寻宝 这个小游戏是一个白痴在一个昏暗的房间走动找到关键得分点,然后通关游戏.入门Unity3D做的第一款游戏,比较无聊,但实现了一般的游戏功能.如,人物控制,碰撞检测,主控制 ...

  6. 迷宫寻宝(一)(bfs)

    迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编 ...

  7. 数据结构实习 Problem H 迷宫的最短路径

    数据结构实习 Problem H 迷宫的最短路径 题目描述 设计一个算法找一条从迷宫入口到出口的最短路径. 输入 迷宫的行和列m n 迷宫的布局 输出 最短路径 样例输入 6 8 0 1 1 1 0 ...

  8. NYOJ82 迷宫寻宝(一)【BFS】

    迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 一个叫ACM的寻宝者找到了一个藏宝图.它依据藏宝图找到了一个迷宫,这是一个非常特别的迷宫,迷宫里有N个 ...

  9. FOJ Problem 2256 迷宫

                                                                                                        ...

随机推荐

  1. 持续集成-Jenkins常用插件安装

    1. 更新站点修改 由于之前说过,安装Jenkins后首次访问时由于其他原因[具体未知]会产生离线问题.网上找了个遍还是不能解决,所以只能跳过常用插件安装这步.进入Jenkins后再安装这些插件. 在 ...

  2. 团队作业—预则立&&他山之石

    团队作业-预则立&&他山之石 Deadline: 2017.10.24 22:00pm 作业要求 一.确立团队选题,建立和初步熟悉团队git的协作方式.项目后续的代码.文档都要通过gi ...

  3. ABAP 7.40, SP08 中的 Open SQL 新特性

    1,使用 data_source~*指定列 在7.40, SP08中,可以在SELECT语句中使用data_source~*来指定选取不同的数据库表.视图的全部列来作为结果集.它也可以和单独指定的列c ...

  4. Linux 简介(day1)

    一.Linux 诞生于1991年 二.创始人:林纳斯.托瓦茨(Linus Torvalds) 三.logo:企鹅 四.Linux完整系统包括 1.Linux kernel (Linux 内核) 2.f ...

  5. 【Linux基础】tr命令替换和删除字符

    1.tr命令 tr可以对来自标准输入的字符进行替换.压缩和删除,可以将一组字符变成另外一组字符.通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能.您可以将 tr 看作为 sed 的(极其 ...

  6. Nginx使用教程(八):使用Nginx缓存之Memcached缓存

    使用Memcache <br\>Memcache是一个通用的内存缓存系统. 它通常用于加速缓慢的数据访问. NGINXmemcached模块提供各种指令,可以配置为直接访问Memcache ...

  7. ES5-ES6-ES7_对象的扩展

    简化的对象写法 省略同名的属性值,省略方法的function let x = 1; let y = 2; let point = { x, y, setX (x) { this.x = x } }; ...

  8. Mysql 数据类型 以及约束

    数据类型 整型 默认有符号 无符号(unsigned) 和有符号 用 0 填充 zerofill 约束的作用: 保证数据的完整性 和一致性 tinyint[ -128 , 127 ] 小整数 无符号( ...

  9. Linux 27 岁了!盘点 Linux 的 27 件趣事

    Linux 27 岁了!盘点 Linux 的 27 件趣事 许多人认为10月5日是 Linux 系统的周年纪念日,因为这是 Linux 在1991年首次对外公布的时间.不过,你可能不知道的是,早在19 ...

  10. git 冲突解决的方法

    版权声明:本文为博主原创文章,未经博主同意不得转载. 新博客地址:www.atomicdevelop.com https://blog.csdn.net/believer123/article/det ...