【ACM】CODE[VS] 1215 (DFS)
题目描述 Description
在N*N的迷宫内,“#”为墙,“.”为路,“s”为起点,“e”为终点,一共4个方向可以走。从左上角((0,0)“s”)位置处走到右下角((n-1,n-1)“e”)位置处,可以走通则输出YES,不可以走则输出NO。
输入描述 Input Description
输入的第一行为一个整数m,表示迷宫的数量。
其后每个迷宫数据的第一行为一个整数n(n≤16),表示迷宫的边长,接下来的n行每行n个字符,字符之间没有空格分隔。
输出描述 Output Description
输出有m行,每行对应的迷宫能走,则输出YES,否则输出NO。
样例输入 Sample Input
1
7
s...##.
.#.....
.......
..#....
..#...#
###...#
......e
样例输出 Sample Output
YES
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 20;
int vis[maxn][maxn],n,flag;
char map[maxn][maxn];
int xx[5]={0,-1,1,0,0};
int yy[5]={0,0,0,-1,1};
void dfs(int x,int y)
{int i;vis[x][y]=1;if(map[x][y]=='e') {flag=1;return ;}for(i=1;i<=4;i++){if(x+xx[i]>=0 && x+xx[i]<n && y+yy[i]>=0 && y+yy[i]<n && map[x+xx[i]][y+yy[i]]!='#' && vis[x+xx[i]][y+yy[i]]==0){dfs(x+xx[i],y+yy[i]);}/*把两个if合并,时间更少 if(x+xx[i]>=0 && x+xx[i]<n && y+yy[i]>=0 && y+yy[i]<n ){if( map[x+xx[i]][y+yy[i]]!='#' && vis[x+xx[i]][y+yy[i]]==0)dfs(x+xx[i],y+yy[i]);}*/}
}
int main ()
{int T,i,j;cin>>T;while(T--){cin>>n;memset(vis,0,sizeof(vis));memset(map,0,sizeof(map));for(i=0;i<n;i++)for(j=0;j<n;j++)cin>>map[i][j];flag=0;dfs(0,0);if(flag)printf("YES\n");elseprintf("NO\n");}return 0;
}
【ACM】CODE[VS] 1215 (DFS)相关推荐
- 【ACM】CODE[VS] 2806(DFS)
感觉有点入了DFS的门槛,距离完全掌握还差得远呢 AC代码:运行时间为7ms #include <iostream> #include <cstdio> #include &l ...
- 【ACM】杭电OJ 2149
Public Sale [问题描述] 虽然不想,但是现实总归是现实,Lele始终没有逃过退学的命运,因为他没有拿到奖学金.现在等待他的,就是像FarmJohn一样的农田生涯. 要种田得有田才行,Lel ...
- 【ACM】Spit Problem
[ACM]Spit Problem 题目 In a Berland's zoo there is an enclosure with camels. It is known that camels l ...
- 【 MATLAB 】离散傅里叶级数(DFS)与DFT、DTFT及 z变换之间的关系
上篇博文我们简单的讨论了离散傅里叶级数DFS和离散傅里叶变换DFT之间的关系,简单地说,DFT就是DFS在一个周期内的表现. [ MATLAB ]离散傅里叶变换(DFT)以及逆变换(IDFT)的MAT ...
- 【POJ】2676-Sudoku 【51Nod】1211-数独(DFS)
[POJ]2676-Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 25200 Accepted: 11782 Sp ...
- 【BZOJ1064】[Noi2008]假面舞会 DFS树
[BZOJ1064][Noi2008]假面舞会 Description 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会.今年的面具都是主办方特别定制的.每个参加舞会的人都可以在入场时选择 ...
- 【ACM】删数问题(待更)
[描述]键盘输入一个正整数N,去掉其中任意S个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的N和S寻找一种方案使得剩下的数字组成的新数最小.(N不超过240位,N>S) [输入] ...
- 【ACM】连续出现的字符
[描述]给定一个字符串,在字符串中找到第一个连续出现k次的字符 [输入]第一行包含一个正整数k,表示至少需要连续出现的次数.1<=k<=1000.第二行包含需要查找的字符串.字符串的长度在 ...
- 【ACM】UVa 489 刽子手游戏(自顶向下)
[题目] Hangman Judge是一个猜英文单字的小游戏(在电子字典中常会看到),游戏规则如下: 1.答案单字写在纸上(每个字元一张纸),并且被盖起来,玩家每次猜一个英文字元(letter). 2 ...
最新文章
- getinstance方法详解_二、设计模式总览及工厂模式详解
- try finally 中的return
- 9月9日项目群管理活动讨论
- python安装在什么系统下最好-python开发环境哪个好用?如何搭建?
- POJ3040给奶牛发工资
- 天猫整站SSM-分页-limit(做个人学习笔记整理用)
- Win10系统自带输入法怎么设置
- JavaScript Ajax
- 优酷APP响应式布局在消费场景的落地之Android篇
- java获取classes_一个Java项目布署到weblogic里,听说weblogic会把classes目录打成jar包,怎么获取classes里文件的路径...
- JIT 编译器 是什么
- re学习笔记(0) CG-CTF-re-3 py交易
- Matlab GUI编程技巧(八):uitoolbar在图窗中创建工具栏
- Project 2016 中文版软件快捷键学习
- oracle ora00940,ORA-32773问题的解决方法。
- ECharts 示例——双Y轴(一)
- 计算机软件如何控制硬件工作,介绍软件是怎样控制硬件的
- Linux如何获取mtd数据,【转载】上接Linux MTD下获取Nand flash各个参数的过程的详细解析【转】...
- MACBOOK强制退出程序的方法
- fsl左右海马体分割+freesurfer合并