NYOJ 1129 Salvation(dfs+调方向技巧)
来源:互联网 发布:程序员找男朋友 编辑:程序博客网 时间:2024/05/21 10:12
- 描述
神秘瀑布镇是一个神秘的地方,那里有吸血鬼,狼人,巫师,二重身。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..N4 4.....##..###T#.XN
- 样例输出
YESNO
ac代码:
#include<stdio.h>#include<string.h>int dx[4]={-1,0,1,0};int dy[4]={0,-1,0,1};int v[105][105];char map[105][105];int bz,n,m,bs;int fun(char c)//初始位置方向{ if(c=='N')return 0; if(c=='W')return 1; if(c=='E')return 2; if(c=='S')return 3;}int check(int x,int y)//检查{ if(x<0||x>=n||y<0||y>=m||map[x][y]=='#') return 0; return 1;}void dfs(int x,int y,int bs){ if(bz==1) { return; } for(int i=1;i>-3;i--) { int ds=(bs+i+8)%4;//关键是改变方向 int nx=x+dx[ds]; int ny=y+dy[ds]; if(check(nx,ny)) { if(map[nx][ny]=='X') { bz=1; return; } if(v[nx][ny]==4)//避免重复路径,即同一个点4个方向都走过了 return; v[nx][ny]++; dfs(nx,ny,ds); return;//必须加 } }}int main(){ char str; int bx,by; while(scanf("%d%d",&n,&m)!=EOF) { for(int i=0;i<n;i++) { scanf("%s",map[i]); for(int j=0;j<m;j++) { if(map[i][j]=='T') { bx=i;by=j; } } } getchar(); scanf("%c",&str); bz=0; memset(v,0,sizeof(v)); v[bx][by]=1; dfs(bx,by,fun(str)); if(bz) printf("YES\n"); else printf("NO\n"); } return 0;}
0 0
- NYOJ 1129 Salvation(dfs+调方向技巧)
- NYOJ题目1129 Salvation(dfs,技巧)
- NYOJ 1129 Salvation (DFS)
- NYOJ 1129 Salvation(技巧型深搜)
- nyoj 1129 Salvation(判断方向+判断走向)
- Salvation nyoj 1129
- nyoj 1129 Salvation 模拟
- Salvation(dfs)
- nyoj1129 Salvation dfs
- Salvation
- Salvation
- nyoj Thepartialsumproblem(DFS)
- nyoj 素数环(dfs)
- NYOJ 491 dfs() (水)
- nyoj素数环(dfs)
- nyoj 587 blockhouses(DFS)
- 素数环 nyoj (dfs)
- NYOJ 587 blockhouses (DFS)
- 第14周程序阅读 例1
- 十四周项目一
- 第十四周项目1--小玩文件(1)
- Android注入框架你应该知道的一切------打造自己的注入框架
- 第十四周项目:小玩文件(1)
- NYOJ 1129 Salvation(dfs+调方向技巧)
- 第十四周阅读程序1:文件流
- 第十四周 项目一 小玩文件
- 第十五周 【项目1 - 小玩文件】
- 第14周项目1-小玩文件(1)
- python学习笔记
- 第十四周项目一之小玩文件
- 第十三周 课后实践:阅读程序2
- 集合框架