【Codevs1215】迷宫
2016-02-20 19:40
267 查看
Description
在N*N的迷宫内,“#”为墙,“.”为路,“s”为起点,“e”为终点,一共4个方向可以走。从左上角((0,0)“s”)位置处走到右下角((n-1,n-1)“e”)位置处,可以走通则输出YES,不可以走则输出NO。Input
输入的第一行为一个整数m,表示迷宫的数量。其后每个迷宫数据的第一行为一个整数n(n≤16),表示迷宫的边长,接下来的n行每行n个字符,字符之间没有空格分隔。
Output
输出有m行,每行对应的迷宫能走,则输出YES,否则输出NO。Sample Input
1 7 s...##. .#..... ....... ..#.... ..#...# ###...# ......e
Sample Output
YES
题解
#include<iostream> using namespace std; char a[20][20]; bool vis[20][20]; int xx[5]={0,-1,1,0,0}; int yy[5]={0,0,0,-1,1}; int m,n,judge; void dfs(int x,int y) { vis[x][y]=true; if (a[x][y] == 'e') { judge = 1; return; } for (int i=1;i<=4;i++) if (x+xx[i]>0 && x+xx[i]<=n && y+yy[i]>0 && y+yy[i]<=n) if (a[x+xx[i]][y+yy[i]] != '#' && !vis[x+xx[i]][y+yy[i]]) dfs(x+xx[i],y+yy[i]); } int main() { cin>>m>>n; for (int i=1;i<=m;i++) { judge=0; for (int j=1;j<=n;j++) for (int k=1;k<=n;k++) cin>>a[j][k]; dfs(1,1); if (judge) cout<<"YES"; else cout<<"NO"; } return 0; }
相关文章推荐
- Linux CentOS系统下菜单栏和任务消失的解决办法
- 基础练习 回文数
- Linux笔记(7)——压缩命令
- C++学习笔记之 构造函数的初始化列表
- leetcode——Reverse Integer
- js对象简单、深度克隆(复制)
- Unity3D教程:换装方法
- 写程序也好多年了,今天突然觉得应该不学到的东西记下来 同步/异步
- C++ Service中OpenFileMapping"拒绝访问"错误
- crontab定时任务详解
- 2016年书单和电影
- 数组的提示
- 1104. Sum of Number Segments (20)
- 算法训练 C*++ Calculations
- Java线程-隋唐演义大戏
- Creating Named Shared Memory
- Cocoapods安装 这么简单?!!!
- mysql配置文件相关
- leetcode(304) Range Sum Query 2D - Immutable
- Ubuntu 手机再添俩虎将:Xperia Z1、一加