博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1215 迷宫
阅读量:5252 次
发布时间:2019-06-14

本文共 1399 字,大约阅读时间需要 4 分钟。

1215 迷宫

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold 
 
题目描述 
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 思路:深搜。
1 #include
2 #include
3 using namespace std; 4 int map[20][20]; 5 int d[5]={
0,1,0,-1,0}; 6 int n,m; 7 char s; 8 void dfs(int a,int b) 9 {10 if(a==m&&b==m)return ;11 for(int i=0;i<4;++i)12 {13 int h=a+d[i];14 int z=b+d[i+1];15 if((h<=m)&&(h>0)&&(z>0)&&(z<=m)&&map[h][z]==0)16 {17 map[h][z]=1;18 dfs(h,z);19 }20 }21 }22 int main()23 {24 cin>>n;25 while(n--)26 {27 memset(map,0,sizeof(map));28 cin>>m;29 for(int i=1;i<=m;++i)30 {31 for(int j=1;j<=m;++j)32 {33 cin>>s;34 if(s=='#')map[i][j]=1;35 }36 }37 map[1][1]=1;38 dfs(1,1);39 if(map[m][m])cout<<"YES\n";40 else cout<<"NO\n";41 }42 return 0;43 }

 

转载于:https://www.cnblogs.com/mjtcn/p/6746152.html

你可能感兴趣的文章
svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法...
查看>>
熟用TableView
查看>>
Java大数——a^b + b^a
查看>>
poj 3164 最小树形图(朱刘算法)
查看>>
服务器内存泄露 , 重启后恢复问题解决方案
查看>>
android一些细节问题
查看>>
KDESVN中commit时出现containing working copy admin area is missing错误提示
查看>>
利用AOP写2PC框架(二)
查看>>
【动态规划】skiing
查看>>
java定时器的使用(Timer)
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>
boost 同步定时器
查看>>
[ROS] Chinese MOOC || Chapter-4.4 Action
查看>>
简单的数据库操作
查看>>
iOS-解决iOS8及以上设置applicationIconBadgeNumber报错的问题
查看>>
亡灵序曲-The Dawn
查看>>
Redmine
查看>>
帧的最小长度 CSMA/CD
查看>>
xib文件加载后设置frame无效问题
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>