Codevs1026 SEARCH(逃跑的拉尔夫 )(BFS)
SEARCH
时间限制: 1 Sec 内存限制: 128 MB
提交: 11 解决: 4
[提交][状态][讨论版]
题目描述
那个装置太旧了,以至于只能发射关于那辆车的移动路线的方向信息。
编写程序,通过使用一张小镇的地图帮助警察局找到那辆车。程序必须能表示出该车最终所有可能的位置。
小镇的地图是矩形的,上面的符号用来标明哪儿可以行车哪儿不行。“.”表示小镇上那块地方是可以行车的,而符号“X”表示此处不能行车。拉尔夫所开小车的初始位置用字符的“*”表示,且汽车能从初始位置通过。
汽车能向四个方向移动:向北(向上),向南(向下),向西(向左),向东(向右)。
拉尔夫所开小车的行动路线是通过一组给定的方向来描述的。在每个给定的方向,拉尔夫驾驶小车通过小镇上一个或更多的可行车地点。
输入
以下的R行中每行都包含一组C个符号(“.”或“X”或“*”)用来描述地图上相应的部位。
接下来的第R+2行包含一个自然数N,1≤N≤1000,表示一组方向的长度。
接下来的N行幅行包含下述单词中的任一个:NORTH(北)、SOUTH(南)、WEST(西)和EAST(东),表示汽车移动的方向,任何两个连续的方向都不相同。
输出
样例输入
4 5
.....
.X...
...*X
X.X..
3
NORTH
WEST
SOUTH
样例输出
.....
*X*..
*.*.X
X.X..
【分析】就是个暴搜,一开始没加vis,各种WA,TLE,MLE
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <vector>
#include<functional>
#define mod 1000000007
#define inf 0x3f3f3f3f
#define pi acos(-1.0)
using namespace std;
typedef long long ll;
const int N=+;
const int M=;
ll power(ll a,int b,ll c){ll ans=;while(b){if(b%==){ans=(ans*a)%c;b--;}b/=;a=a*a%c;}return ans;}
struct man
{
int x,y;
int num;
};
int n,m,k,I,J;
char w[N][N];
char p[N];
int d[][]={-,,,,,-,,};
int a[];
int vis[N][N][];
bool check(int sx,int sy,int ex,int ey)
{
if(sx==ex){
for(int i=min(sy,ey);i<=max(sy,ey);i++)if(w[sx][i]=='X')return false;
}
if(sy==ey){
for(int i=min(sx,ex);i<=max(sx,ex);i++)if(w[i][sy]=='X')return false;
}
return true;
}
void bfs()
{
queue<man>q;
man s;s.num=;s.x=I;s.y=J;
q.push(s);
vis[I][J][]=;
while(!q.empty()){
man t=q.front();q.pop();//printf("%d %d %d\n",t.x+1,t.y+1,t.num);
if(t.num==k){w[t.x][t.y]='*';continue;}
for(int i=;i<=;i++){
int j=a[t.num];
int xx=t.x+i*d[j][];
int yy=t.y+i*d[j][];
if(xx<||xx>=n||yy<||yy>=m)break;
if(check(t.x,t.y,xx,yy)&&vis[xx][yy][t.num+]==){
man kk;kk.num=t.num+;kk.x=xx;kk.y=yy;
q.push(kk);
vis[xx][yy][t.num+]=;
}
}
}
}
int main()
{
memset(vis,,sizeof(vis));
scanf("%d%d",&n,&m);
for(int i=;i<n;i++)scanf("%s",w[i]);
for(int i=;i<n;i++)for(int j=;j<m;j++)if(w[i][j]=='*'){I=i;J=j;w[i][j]='.';break;}
scanf("%d",&k);
for(int i=;i<k;i++){
scanf("%s",p);
if(p[]=='N')a[i]=;
if(p[]=='S')a[i]=;
if(p[]=='W')a[i]=;
if(p[]=='E')a[i]=;
}
bfs();
for(int i=;i<n;i++)printf("%s\n",w[i]);
return ;
}
Codevs1026 SEARCH(逃跑的拉尔夫 )(BFS)的更多相关文章
- code vs 1026 逃跑的拉尔夫
1026 逃跑的拉尔夫 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 年轻的拉尔夫开玩笑地从一个小镇上偷走 ...
- AC日记——逃跑的拉尔夫 codevs 1026 (搜索)
1026 逃跑的拉尔夫 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 年轻的拉尔夫开玩笑地从一 ...
- WIKIOI 1026 逃跑的拉尔夫 深度优先搜索
/* 1026 逃跑的拉尔夫 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆 ...
- codevs 1026 逃跑的拉尔夫 x
1026 逃跑的拉尔夫 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他 ...
- 洛谷P1189 逃跑的拉尔夫(SEARCH)
洛谷1189 SEARCH 题目描述 年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且车上装有用于发射车子移动路线的装置. 那个装置太旧了,以至于只能发射关于那辆车的 ...
- P1189 SEARCH(逃跑的拉尔夫)
P1189 SEARCH 题目描述 年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且车上装有用于发射车子移动路线的装置. 那个装置太旧了,以至于只能发射关于那辆车的移 ...
- Codevs1026 逃跑的拉尔夫
题目描述 Description 年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且车上装有用于发射车子移动路线的装置. 那个装置太旧了,以至于只能发射关于那辆车的移动 ...
- 【wikioi】1026 逃跑的拉尔夫
题目链接 算法:BFS 14.01.02 PS: 本人再次脑残,BFS又是写得那么脓肿,突然发现我原来什么搜索都是不会的呀.. //2014-02-05已更新 ******************** ...
- Aizu 2677 Breadth-First Search by Foxpower LCA+bfs
A - Breadth-First Search by Foxpower Problem Statement Fox Ciel went to JAG Kingdom by bicycle, but ...
随机推荐
- iOS笔记059 - 网络总结
网络 基本概念 客户端:client 服务器:server 请求:request 响应:response 过程 客户端 -> 发送请求 -> 服务器(连接数据库) 服务器 -> 发送 ...
- 如何将现有的项目添加到远程的git库里面!
我们经常都会遇到这样的场景,就是将本地的一个项目同步到网上远程的git库里面.最近也遇到这样的问题,发现网上很少人讲到这个问题,但是这个问题是很多程序员遇到的版本库管理的最早的拦路虎. 我的远程是ht ...
- Python全栈工程师(字符串/序列)
ParisGabriel Python 入门基础 字符串:str用来记录文本信息字符串的表示方式:在非注释中凡是用引号括起来的部分都是字符串‘’ 单引号“” 双引号''' ''' ...
- CentOS 6.3 下 vsftp搭建
环境:CentOS6.3 ftp的三种用户模式 匿名用户:vsftp默认开启匿名用户,但只允许下载不允许上传:匿名用户anonymous或ftp:匿名用户目录/var/ftp,但实际上vsftp对匿名 ...
- macOS Mojave 深色模式
macOS Mojave 深色模式 mac 关闭 深色模式 https://support.apple.com/zh-cn/HT208976 https://www.apple.com/cn/maco ...
- Scala 基础(4)—— 类和对象
1. 类.字段和方法 Scala 用 class 关键字定义类,一旦定义好一个类,就可以使用 new 关键字创建对象. Scala 使用 new 调用无参构造器时,可以不使用 (),推荐不使用括号: ...
- BZOJ1017 [JSOI2008]魔兽地图DotR 【树形dp + 背包dp】
题目链接 BZOJ1017 题解 orz hzwer 树形dp神题 设\(f[i][j][k]\)表示\(i\)号物品恰好花费\(k\)金币,并将\(j\)个物品贡献给父亲的合成时的最大收益 计算\( ...
- BZOJ3668 [Noi2014]起床困难综合症 【贪心】
题目 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找到了该病的发病原因 ...
- error : cannot open source file "SDKDDKVer.h"
属性->VC++ Directions-> include path 中加了:$(IncludePath) library path 中加了:$(LibraryPath)
- 转:Intent与PendingIntent
intent英文意思是意图,pending表示即将发生或来临的事情. PendingIntent这个类用于处理即将发生的事情.比如在通知Notification中用于跳转页面,但不是马上跳转. Int ...