Salvation

时间限制: 1000 ms  |  内存限制: 65535 KB
难度: 3
描述

神秘瀑布镇是一个神秘的地方,那里有吸血鬼,狼人,巫师,二重身。 Klaus(吸血鬼祖先) 为了利用 Elena 的血液发展他的混血大军(吸血鬼&狼人),也来到了神秘瀑布镇。Stefan 因为深爱着 Elena ,于是 Stefan 决定去唤醒吸血鬼猎人,来解救 Elena 。

吸血鬼猎人被封锁在一个迷宫里,这个迷宫有一种特性,只要进入就会失去方向感。于是 Stefan 想到一种方法,以左为标准(即优先左走),其次向前,向右,如果都无法走就向后走(即向右转两次)。他可以向上下左右四个方向的空格移动一个格,每次耗费1分钟。Stefan 在得知你是一个有天赋的程序员后,决定让你判断他是否能找到吸血鬼猎人。

输入
输入包含多组测试数据,第一行输入 n , m ( 2 < n ,m <= 100) ,接下来n行每行m个字符,第 n + 2 行一个字符表示初始方向(E W S N)。
“.”代表空格 ,“#”代表墙 , “ T ”代表初始位置,“X”代表吸血鬼猎人的位置。
输出
输出一行,如果能找到输出“YES”,否则输出“NO”。
样例输入
4 4
....
.##.
.##.
TX..
N
4 4
....
.##.
.###
T#.X
N
样例输出
YES
NO
这是个技巧题!
一定要自己多琢磨一下方向问题!
可以把任意方向作为标记为0(我把S作为0的方向),其他方向分别标记为1,2,3;(这个需要自己琢磨)!!!
(自己看了一下午我,哎!)!
还有mov数组的赋值也和你定的0方向有关!
我的标记  (s的前边)S  0;                      mov数组: 1,0 (s的前边)              方向和标记一致!
         (s的左边)E  1;                                0,1 (s的。。)
         (s的右边)N  2;                               -1,0  (。。)
         (s的后边)W  3;                                0,-1 (。。)
由于四个方向原因,要在不同的方向行走:visit数组要标记4遍才算标记过!
   好吧!就这样!
、代码:
    
#include<stdio.h>
#include<string.h>
#define N 110
int mov[4][2]={1,0,0,1,-1,0,0,-1};
int visit[N][N];
int n,m,bgx,bgy,endx,endy,mark;
char map[N][N];
int  judge(int x,int y)
{return  x>=0&&x<n&&y>=0&&y<m&&map[x][y]!='#'&&visit[x][y]<4;
}
void dfs(int DR,int x,int y)
{if(mark)return;for(int i=1;i>-3;i--){int dr=(DR+i+8)%4;//主要的功能的实现!自己先试试,把方向做定! int tx=x+mov[dr][0];int ty=y+mov[dr][1];                                              if(judge(tx,ty)){if(tx==endx&&ty==endy)mark=1;visit[tx][ty]++;dfs(dr,tx,ty);return ;//这里的理解,。。。,不加就wa了!暂时不太理解 }}return ;
}
int main()
{while(scanf("%d%d",&n,&m)!=EOF){int i,j;for(i=0;i<n;i++){getchar();for(j=0;j<m;j++){scanf("%c",&map[i][j]);if(map[i][j]=='T'){bgx=i;bgy=j;}if(map[i][j]=='X'){endx=i;endy=j;}}}getchar();char  s;int DR;scanf("%c",&s);switch (s)//判断初始方向 {case 'S':  DR=0;break;case 'E':  DR=1;break;case 'N':  DR=2;break;case 'W':  DR=3;break;}memset(visit,0,sizeof(visit));mark=0;dfs(DR,bgx,bgy);if(mark)printf("YES\n");elseprintf("NO\n");}return  0;
}

     
             

nyoj 1129 Salvation(判断方向+判断走向)相关推荐

  1. java三点确定圆弧_圆弧方向判断方法和三点确定一个圆的计算方法

    圆弧方向判断方法 设p1=(x1,y1) p2=(x2,y2) p3=(x3,y3) 求向量 p12=(x2-x1,y2-y1) p23=(x3-x2,y3-y2) 则当 p12与p23的叉乘(向量积 ...

  2. 圆弧方向判断方法和三点确定一个圆的计算方法

    圆弧方向判断方法 设p1=(x1,y1)   p2=(x2,y2)  p3=(x3,y3)   求向量 p12=(x2-x1,y2-y1) p23=(x3-x2,y3-y2)    则当 p12与p2 ...

  3. python实现基于八方向判断的断裂连接

    ''' 八方向连接算法 ''' import numpy as np import matplotlib.image as mpimg from PIL import Image def comput ...

  4. IOS基础之iPad的屏幕旋转方向判断

    IOS基础之iPad的屏幕旋转方向判断 #pragma mark - 屏幕旋转 - (void)viewWillTransitionToSize:(CGSize)size withTransition ...

  5. input 输入速度和方向判断、搜索功能的延迟请求

    1.input 输入速度和方向判断 var wxApp = {} wxApp.click = function (str,speed) {var lastInput = {d: "" ...

  6. Android-传感器开发-方向判断

    FROM:http://blog.csdn.net/baidu_28479651/article/details/47299927 自从苹果公司在2007年发布第一代iPhone以来,以前看似和手机挨 ...

  7. 斜齿轮、圆锥齿轮、蜗轮蜗杆的旋向(螺旋线方向)、转向、圆周力、径向力、轴向力等的方向判断【小记】

    斜齿轮.圆锥齿轮.蜗轮蜗杆 相关的方向判断 [PS. 只是记录自己的心得,不保证一定对.Σσ(・Д・:)!!!] 一.斜齿轮.蜗轮蜗杆3种力方向的判断 本质上都是斜齿轮,互通. 口诀: 圆周力 FtF ...

  8. iOS开发入门——模拟器方向判断及基本功能

    iOS开发入门--模拟器方向判断及基本功能 方向判断简单实用 手机模拟器吧,嗯...很多时候我们可能会遇到手机横屏之后图像没变的情况,嗯?怎么回事?这次我们就先来看看这种情况,做一个简单的判断. im ...

  9. UNITY中利用点乘和叉乘判断方向 2D

    void DirectionJudge(){Vector3 dir = mousePositionInWorld - transform.position;dir.z = 0f;var magiDir ...

最新文章

  1. HTTP协议之Chunked解析
  2. Linux系统下配置Java环境
  3. 一个关于小程序Iot的具体实现(MQTT版)
  4. 【玩转Ubuntu】01. Ubuntu上配置JDK
  5. 面试题编程题11-python 生成随机数
  6. Leetcode题库 5.最长回文子串(C++实现)
  7. mongo mapreduce java_那位帮忙提供一个java mongodb多个collection进行mapreduce的操作。
  8. Android之基于BaseAdapter和SimpleAdapter的GridView
  9. ArcEngine开发 退出系统报错
  10. C++是一种糟糕的语言 Linux之父炮轰C++
  11. jQuery(三)—— jQuery 事件 / jQuery 拷贝对象 / 多库共存 / jQuery 插件
  12. 大数据之-Hadoop环境搭建_hadoop官网手册---大数据之hadoop工作笔记0020
  13. 网信办拟规定:平台未经用户同意不得强制订阅关注账号;Twitter回应大范围宕机;Krita 4.4.0发布|极客头条
  14. BASH系列(2)——变量
  15. 11g表名大小写 oracle_Oracle数据库总结
  16. CNware防DDOS攻击介绍--云宏
  17. LCD12864驱动显示程序
  18. 7个人生工具:SWOT、PDCA、6W2H、SMART、WBS、时间管理、二八原则
  19. IDEA使用Git大全
  20. Python交流QQ群

热门文章

  1. Springboot配置undertow容器
  2. 统计-4 概率、古典概率
  3. DataTables入门
  4. 基于工业互联网的数据安全体系建设
  5. 数据库中的datatime的长度怎么设定_《龙珠》中超级赛亚人的设定是怎么有的?...
  6. PostgreSQL:trunc函数
  7. 【个人笔记】Unity插件“Cinemachine”——实现尼尔机械纪元运镜设计
  8. PHP环境、DW的站点设置
  9. Docker热迁移研究背景,问题描述及解决方案
  10. 从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除元素的值。