逃出克隆岛 (codevs 2059)
较普通的走迷宫的题
传送门 :codevs 2059 逃出克隆岛
思路 :BFS 即可 PS :传送门 不必重复使用
#include <iostream>
#include <cstdio>
#define Max 2020
using namespace std;
int N, M;
int start_x, start_y, end_x, end_y;
int move_x [] = {, -, , }, move_y [] = {, , , -};
char map [Max][Max];
int queue [Max][];
int cost [Max * ];
bool door [Max][Max], visit [Max][Max];
bool flag;
int pay;
void BFS (int start_x, int start_y)
{
int head_cur = , tail_cur = ;
visit [start_x][start_y] = true; //标记当前点为 已访问
queue [][] = start_x; //将起点入队列
queue [][] = start_y;
cost [] = ; // 当前的花费为0
while (head_cur < tail_cur)
{
head_cur++;
for (int i = ; i <= ; i++)
{
int x = queue [head_cur][] + move_x [i];
int y = queue [head_cur][] + move_y [i];
if (x == end_x && y == end_y) // 如果到达了终点, flag 标记为 true 直接输出花费即可
{
flag = true;
cout << cost [head_cur];
return;
}
if (x > && x <= N && y > && y <= M && map [x][y] != '#' && visit [x][y] == false) // 在边界内,且当前点 不是障碍点 且当前点未访问
{
if (door [x][y] == true) //如果此点为传送门,且当前传送门可以走
{
door [x][y] = false; // 标记为已走
for (int i = ; i <= N; i++)
for (int j = ; j <= M; j++) //在全图内搜索 可走的传送门
if (door [i][j] == true)
{
tail_cur++;
queue [tail_cur][] = i; //将当前传送到的位置加入队列
queue [tail_cur][] = j;
door [i][j] = false; // 标记此传送门为已走
cost [tail_cur] = cost [head_cur]; //由于传送门没有花费, 所以等于前一个点的花费
}
}
tail_cur++; // 如果不是传送门 ,将当前位置加入队列
queue [tail_cur][] = x;
queue [tail_cur][] = y;
visit [x][y] = true; // 标记为已访问
if (map [x][y] == '*') //如果走此点需要花费
cost [tail_cur] = cost [head_cur] + pay; // 上一个点的花费 再加一次花费 即为当前位置的花费
else
cost [tail_cur] = cost [head_cur]; // 若是普通点,则当前点的花费等于上一个点的花费
}
}
}
}
int main()
{
ios :: sync_with_stdio (false);
cin >> N >> M >> pay;
for (int i = ; i <= N; i++)
for (int j = ; j <= M; j++)
{
cin >> map [i][j];
if (map [i][j] == 'Y') // 记录起点
{
start_x = i;
start_y = j;
}
else if (map [i][j] == 'C') //记录终点
{
end_x = i;
end_y = j;
}
else if (map [i][j] == 'P') //记录传送门的位置 标记当前传送门可访问
door [i][j] = true;
}
BFS (start_x, start_y);
if (flag == false) // 若走不通
cout << "screw you!";
return ;
}
逃出克隆岛 (codevs 2059)的更多相关文章
- codevs 2059 逃出克隆岛
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description oi小组的yh酷爱玩魔兽rpg,每天都会在u9搜索最新的rpg地图. 今天,他 ...
- AC日记——逃出克隆岛 (bfs)
2059 逃出克隆岛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description oi小组的yh酷爱玩魔兽rpg,每天都 ...
- codevs2059逃出克隆岛(传送门bfs)
/* 和普通的迷宫问题类似只是多了一个叫传送门的东西 对于传送门的处理: 每当跑到传送门就把其余所有传送门周围的点都入队 传送门之间不花费时间并且从不是传送门的点走到传送门 也不花费时间花费时间的(好 ...
- 使用 trash-cli 逃出 rm 命令误删除重要文件的阴影
今天是一个难忘的日子,当时本来想清除我们公司网站cms目录下面一些cdn推送网页后残留的垃圾文件,结果在执行rm -rf conten* 时打成了rm -rf conten *结果就悲剧了.cms目录 ...
- 西南民族大学第十二届程序设计竞赛(同步赛) A.逃出机房 (bfs)
题意:有来两个人A和B,A追B,A和B每次向上下左右移动一个单位,一共有两扇门,问A是否可以追上B(在门口追上也算合法). 题解:当时看题意说在门口也算?就觉得是判断两个人到门口的时间,对他们两个人分 ...
- 最短路【洛谷P3393】 逃离僵尸岛
P3393 逃离僵尸岛 题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被 ...
- codevs 1144 守望者的逃离
传送门 1144 守望者的逃离 2007年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 恶 ...
- luogu P3393 逃离僵尸岛-搜索剪枝+spfa
P3393 逃离僵尸岛 题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被 ...
- 洛谷⑨月月赛Round2 P3393逃离僵尸岛[最短路]
题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被僵尸控制了,如果贸然闯入 ...
随机推荐
- DevExpress中GridView Excel下载
DevExpress中GridView提供了许多Excel下载的方法,如gridView.ExportToExcelOld(sfdExcelDown.FileName); 在修改Bug时,遇到这样问题 ...
- iOS 制作 framework 教程
直接看步骤 废话不多说,哈哈! 1.新建一个静态库工程: 2:取自己喜欢的名字: 3.删除向导所生成工程中的 Target: 3.删除TestFrameWork对应的工程文件夹: 5:删除bulid ...
- 【xcode插件介绍】Alcatraz ----The package manager for Xcode
对于许多iOS开发者而言,Alcatraz并不陌生,甚至是相当的喜闻乐见.Alcatraz是一款开源的Xcode包管理器,由Marin Usalj.Delisa Mason和Jurre Stender ...
- Salt状态管理
Salt状态管理 前言 上一篇文章概括性的介绍了Salt的用途和它的基本组成和实现原理,也深入的的介绍了Salt的命令编排和批量执行,但是对于状态管理只是简单的介绍了一下,因为状态管理是一个比较重 ...
- [Usaco2008 Feb]Line连线游戏[暴力][水题]
Description Farmer John最近发明了一个游戏,来考验自命不凡的贝茜.游戏开始的时 候,FJ会给贝茜一块画着N (2 <= N <= 200)个不重合的点的木板,其中第i ...
- smtp中ehlo的使用
以前玩smtp的时候申明都是用的helo,最近在整理邮件服务的时候,才知道还有一个叫做ehlo的(太落后了). google了一下,了解了基本上是这么个情况:ehlo是对helo的扩展,即extend ...
- MySQL TIMESTAMP(时间戳)详解
在创建表时如果表中有一个字段类型为TIMESTAMP,则该字段默认的生成语句为: CREATE TABLE `test` ( `id` int(11) DEFAULT NULL, `ctime` ti ...
- phantomjs初次认识
phantomjs初次认识 最近没什么重要的任务,就抽空看了看项目组爬虫小组的代码,因为我们的爬虫主要是以python的scrapy框架为主,看起来比较方便.在看代码的时候看到一个叫phantomjs ...
- VS XCOPY
有时在项目开发过程中,某个项目不直接依赖于另外一个项目,也就是说在编码上不需要使用另外一个项目上的代码,但实际运行的时候需要用到,我们通常的做法是把另外项目中需要用到的DLL拷过来放到该项目的BIN文 ...
- Deploying OpenFire for IM (instant message) service (TCP/IP service) with database MySQL , client Spark on linux部署OpenFire IM 消息中间件服务
Are you a hacker? How to build another QQ/Wechat/whatsapp/skype/imessage? Let's go through this!!!! ...