FZU 2285 迷宫寻宝
思路:
bfs求最短路径。
#include<stdio.h>
#include<iostream>
#include<queue>
#include<cstring>
#define maxn 105
using namespace std;
int sx, sy, ex, ey;
char map[][];
char vis[][];
int dic[][] = { { -, },{ ,- },{ , },{ , } };//4个方向
int res;
struct node {
int x, y, step;
};
int n;
bool check(int x, int y)
{
if (x >= && x < n&&y >= && y < n&&map[x][y] != '#'&&vis[x][y] !=)
return true;
//printf("x=%d y=%d c=%c\n", x, y,map[x][y]);
return false;
} void bfs()
{
queue<node> q;
node a;
node next;
a.x = sx;
a.y = sy;
a.step = ;
vis[a.x][a.y] = ;
q.push(a);
while (!q.empty())
{
a = q.front();
q.pop();
for (int i = ; i<; i++)
{
next = a;
next.x += dic[i][];
next.y += dic[i][];
next.step = a.step + ;
if (next.x == ex&&next.y == ey)//找到出口
{
res = next.step;
// printf("res=%d\n", res);
return;
}
if (check(next.x, next.y))//检查合法性
{
vis[next.x][next.y] = ;
//printf("vis[%d][%d]=1\n", next.x, next.y);
q.push(next);
}
}
}
res = -;
}
int main()
{
while (scanf("%d", &n) == )
{
for (int i = ; i<n; i++)
scanf("%s", &map[i]);
memset(vis, , sizeof(vis));
//for (int i = 0; i < n; i++)
//printf("%s\n", map[i]);
for (int i = ; i<n; i++)
{
for (int j = ; j<n; j++)
{
if (map[i][j] == 'S')
{
sx = i;
sy = j;
}
if (map[i][j] == 'E')
{
ex = i;
ey = j;
}
}
}
//printf("sx=%d sy=%d ex=%d ey=%d\n", sx, sy, ex, ey);
bfs();
printf("%d\n", res);
}
return ;
}
FZU 2285 迷宫寻宝的更多相关文章
- Problem 2285 迷宫寻宝 (BFS)
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2285 Problem 2285 迷宫寻宝 Accept: 323 Submit: 1247Time Li ...
- Problem 2285 迷宫寻宝
http://acm.fzu.edu.cn/problem.php?pid=2285 Problem Description 洪尼玛今天准备去寻宝,在一个n*n (n行, n列)的迷宫中,存在着一个入 ...
- nyoj 82 迷宫寻宝(一)
点击打开链接 迷宫寻宝(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫 ...
- Unity3D实现立体迷宫寻宝
Unity3D实现立体迷宫寻宝 这个小游戏是一个白痴在一个昏暗的房间走动找到关键得分点,然后通关游戏.入门Unity3D做的第一款游戏,比较无聊,但实现了一般的游戏功能.如,人物控制,碰撞检测,主控制 ...
- 迷宫寻宝(一)(bfs)
迷宫寻宝(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编 ...
- 福州大学第十五届程序设计竞赛_重现赛B题迷宫寻宝
Problem B 迷宫寻宝 Accept: 52 Submit: 183Time Limit: 1000 mSec Memory Limit : 32768 KB Problem De ...
- NYOJ82 迷宫寻宝(一)【BFS】
迷宫寻宝(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 一个叫ACM的寻宝者找到了一个藏宝图.它依据藏宝图找到了一个迷宫,这是一个非常特别的迷宫,迷宫里有N个 ...
- nyoj 82 迷宫寻宝(二)
http://acm.nyist.net/JudgeOnline/problem.php?pid=83 题目解法主要在于判断两线段是否相交,思路是穷举所有地图四周的点,其中每一个边界上的点和终点构成一 ...
- 【DFS】NYOJ-82 迷宫寻宝(一)-条件迷宫问题
[题目链接:NYOJ-82] #include<iostream> #include<cstring> using namespace std; struct node{ in ...
随机推荐
- sea.js简单使用教程
sea.js简单使用教程 下载sea.js, 并引入 官网: http://seajs.org/ github : https://github.com/seajs/seajs 将sea.js导入项目 ...
- Entity Framework入门教程(10)---离线场景保存和删除实体/实体图集
离线场景保存和删除实体/实体图集 这一节的内容是在离线场景中保存实体和实体图集 在离线场景中,当我们保存一个离线的实体图集或一个单独的离线实体时,我们需要做两件事.首先,我们要把实体附加到新的上下文中 ...
- 监控c3p0的连接池
SqlSession session = SessionFactory.getSqlSession(dbid); List<Map<String, Object>> resul ...
- HDU 1049(蠕虫爬井 **)
题意是一只虫子在深度为 n 的井中,每分钟向上爬 u 单位,下一分钟会下滑 d 单位,问几分钟能爬出井. 本人是直接模拟的,这篇博客的分析比较好一些,应当学习这种分析问题的思路:http://www. ...
- Arduino传感器学习目录
Arduino-接口图 在Windows上安装Arduino-IDE 函数库和程序架构介绍 Arduino语法-变量和常量 Arduino常用的数据类型以及转换 Arduino—运算符 ...
- Coursera, Big Data 3, Integration and Processing (week 5)
Week 5, Big Data Analytics using Spark Programing in Spark Spark Core: Programming in Spark us ...
- Linux文件权限命令及配置
http://www.cnblogs.com/CgenJ/archive/2011/07/28/2119454.html
- sort与uniq命令详解
1.sort的作用 (排序) sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出. 如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行 ...
- 《css网站布局实录》(李超)——读书札记
1.web表现层技术 2.HTML链接设计思想 3.对信息进行合理的分析.分类与处理来创造商业价值. 4.头部描述浏览器所需信息,主体包含所需要展现的具体内容. 5.HTML(XHTML)XML 6. ...
- HTTP协议11-cookie和seesion
因为HTTP协议是无状态的,但是很多网站的功能需要先登录才能使用.这就引入了cookie. Cookie机制 服务器用HTTP头向客户端发送cookies.客户端(浏览器)解析cookies并将它们保 ...