bnu 4358 左手定则 (搜索)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=4358
【题意】:给定起始位置和方向和目的地,按照左转、前进、右转、后退的优先级递减,也就是说能左转就左转,不能则继续前进,。。。,能走到T的位置输出YES,不能则输出NO。。。
【题解】:
首先我们知道YES肯定就是走到了,若出现NO的情况,肯定是出现了死循环,这题主要考标记,什么时候表示已经进入了死循环呢?每个位置有一个方向,我们将这个位置第一次出现方向的时候标记下来,注意是第一次的方向噢,第二次经过的时候判断,是否方向相同,相同则表示出现了跟之前一样的状态,也就是说出现了循环。。。
【code】:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm> using namespace std; char map[][];
int cx[]={-,,,};
int cy[]={,,,-};
int dr[][];
int n,m; int isCheck(int x,int y)
{
if(x>=&&x<n&&y>=&&y<m) return ;
return ;
} int search(int sx,int sy,int d)
{
while()
{
if(map[sx][sy]=='T') return ;
// cout<<sx<<" "<<sy<<endl;
if(dr[sx][sy]==-)
{
dr[sx][sy]=d;
}
else if(dr[sx][sy]==d)
{
return ;
}
int tx,ty;
//如果左边是空位
int d1 = (d+)%;
tx = sx+cx[d1];
ty = sy+cy[d1];
if(isCheck(tx,ty)&&map[tx][ty]!='#')//可以左转
{
sx = tx;
sy = ty;
d = d1;
}
else if(isCheck(tx,ty)&&map[tx][ty]=='#') //不可以左转
{
// int d2 = (d+1)%4;
int tx2 = sx+cx[d];
int ty2 = sy+cy[d];
if(isCheck(tx2,ty2))
{
if(map[tx2][ty2]=='#')//前方不能走
{
int d2 = (d+)%;
int tx3 = sx+cx[d2];
int ty3 = sy+cy[d2];
if(isCheck(tx3,ty3))
{
if(map[tx3][ty3]!='#')//右边可以走
{
sx = tx3;
sy = ty3;
d = d2;
}
else //右边不可以走,向后走
{
int d3 = (d+)%;
sx = sx+cx[d3];
sy = sy+cy[d3];
d=d3;
}
}
}
else//前方能走
{
sx = tx2;
sy = ty2;
}
}
}
}
} int main()
{
while(~scanf("%d%d",&n,&m))
{
memset(dr,-,sizeof(dr));
int i,j,flag=;
for(i=;i<n;i++) scanf("%s",map[i]);
char dir[];
scanf("%s",dir);
int d;
if(dir[]=='N') d=;
else if(dir[]=='E') d=;
else if(dir[]=='S') d=;
else if(dir[]=='W') d=;
for(i=;i<n;i++)
{
for(j=;j<m;j++)
{
if(map[i][j]=='S')
{
flag = search(i,j,d);
break;
}
}
}
if(flag) puts("YES");
else puts("NO");
}
return ;
}
bnu 4358 左手定则 (搜索)的更多相关文章
- opengl剪裁空间和视口空间中不遵从右手定则,而是遵从左手定则
opengl剪裁空间和视口空间中不遵从右手定则,而是遵从左手定则. 比如说要在视口空间判断一个三角形是否是正面朝向用户,就需要用左手定则而非右手定则.
- JAVAEE——Solr:安装及配置、后台管理索引库、 使用SolrJ管理索引库、仿京东的电商搜索案例实现
1 学习回顾 1. Lucene 是Apache开源的全文检索的工具包 创建索引 查询索引 2. 遇到问题? 文件名 及文件内容 顺序扫描法 全文检索 3. 什么是全文检索? 这种先创建索引 再 ...
- 全文搜索技术—Solr
1. 学习计划 1. Solr的安装及配置 a) Solr整合tomcat b) Solr后台管理功能介绍 c) 配置中文分析器 2. 使用Solr的后台管理索引库 a) ...
- JSOI Round 2题解
强行一波题解骗一个访问量好了... http://blog.csdn.net/yanqval/article/details/51457302 http://absi2011.is-programme ...
- 【Unity3D】计算二维向量夹角(-180到180)
在Unity3D中,有时候我们需要计算二维向量的夹角.二维向量夹角一般在0~180度之前,可以直接调用Vector2.Angle(Vector2 from, Vector2 to)来计算. 但是在有些 ...
- 可爱的PYTHON,更新到0.5版本代码
这书看得挺顺的. 按着思路学习软件开发的主流思想.. cdctools.py # _*_ coding: utf-8 _*_ import os,sys def cdWalker(CDROM, cdc ...
- as3 公式
AS3缓动公式:sprite.x += (targetX - sprite.x) * easing;//easing为缓动系数变量sprite.y += (targetY - sprite.y) * ...
- ●BZOJ 2007 NOI 2010 海拔
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2007 题解: 网络流.最小割.对偶图 奇妙的题 ~ 种种原因导致了高度要么为 0,要么为 1 ...
- 使用mediainfo工具统计每个视频文件(媒体文件)播放时长
需求 1.运营那边需要统计大量视频文件的播放时长,并汇总记录到excel表中,问我有什么方法搞定 这边搜索了很多统计媒体文件时长的,主要有以下几种 1.使用java获取 2.使用python获取 3. ...
随机推荐
- HTML5和Web Apps框架和方法
单页: 1jQuery Mobile 该框架以其基于AJAX的导航系统和可使用主题的ThemeRoller设计而闻名.支持Android,ios,Windows Phone,webOs等.编程模式为C ...
- Asp_CRUD
Asp_增删改查.逻辑流程 启动服务器. 地址为127.0.0.1 端口为随机分配 2607 然后在浏览器中输入http://localhost:2670/CRUD_main.ashx 浏览器像服务器 ...
- visual studio 2015预览版系统需求
visual studio 2015预览版的系统需求跟visual studio 2013的一样. 支持visual studio 2015 preview的操作系统:Windows 8.1(x86 ...
- SQLserver的存储过程
存储过程 [Create是创建存储过程,alter是更改.改变存储过程] [在第一次写存储过程时用create,若修改存储过程程序之后,则alter替换create再执行] [在数据库中begin ...
- Javascript中while和do-while循环用法详解
while循环 while 语句与 if 语句相似,都有条件来控制语句(或语句块)的执行,其语言结构基本相同:while(conditions){ statements;} while 语句与 ...
- JAVA MemCache 史无前例的详细讲解【转】
非原创转自:http://nhy520.iteye.com/blog/1775893 这篇文章是我看到的介绍的比较详细的,入门级别算是足足够了 Memcach什么是Memcache Memcache集 ...
- MySQL和Navicat使用总结
1.给字段设置默认字符值 ALTER TABLE `v_users`MODIFY COLUMN `picture` varchar(50) CHARACTER SET utf8 COLLATE utf ...
- Kubernetes Architecture
reference:https://www.symantec.com/connect/blogs/google-kubernetes-analytical-evaluation
- js获取键盘按键响应事件(兼容各浏览器)
<script type="text/javascript" language="JavaScript" charset="UTF-8" ...
- DTCMS自定义标签,获取所有栏目文章列表TOP,以及文章通用URL
网站最近更新等地方,发现DTCMS没有获取所有栏目文章列表的标签,只能自己写 思路:获取所有栏目文章列表不难,难点在于linkurl的写法 1.制作获取所有文章列表标签 DTcms.Web.UI\La ...