NEFU 558 DFS
来源:互联网 发布:中国文化产业现状知乎 编辑:程序博客网 时间:2024/06/16 01:45
NEFU 558:点击打开链接
迷宫寻路
Problem:558
Time Limit:1000ms
Memory Limit:65536K
Description
AC小公主很喜欢设计迷宫,她设计的迷宫只有两个口,一个入口,一个出口。但小公主有时候很调皮,她会让挑战者走不出迷宫。现在给你AC小公主的迷宫请你判断挑战者能否成功从出口走出迷宫,迷宫包证边界为障碍物,只有两个不同的入口。“#”代表障碍物,“*”代表可走的路。
Input
输入有多组,每组输入两个正整数n,m( 2 < n < m < 1000)。接下来n行,每行有m个字符。
Output
每组测试实例,若挑战者能走出迷宫输出”YES”,否则输出“NO”。
Sample Input
3 3#*##*##*#3 3#*#####*#
Sample Output
YESNO
Hint
Source
难度:水(DFS基础题)
AC代码:
#include <iostream>#include <cmath>#include <cstdio>#include <cstring>using namespace std;int n,m;char a[1005][1005];bool is_way(int x,int y,int si,int sj){ if(x==0||x>n||y==0||y>m) { if(abs(si-x)+abs(sj-y)!=1) return 1; else return 0; } else if(a[x][y]=='*') { a[x][y]='#'; int ans=is_way(x-1,y,si,sj)+is_way(x+1,y,si,sj)+is_way(x,y-1,si,sj)+is_way(x,y+1,si,sj); if(ans>0) return 1; else return 0; } else return 0;}int main(){ while(scanf("%d %d",&n,&m)!=EOF) { getchar(); memset(a,0,sizeof(a)); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) scanf("%c",&a[i][j]); getchar(); } int ans=0; for(int i=1;i<=n&&!ans;i++) if(a[i][1]=='*') ans=is_way(i,1,i,1); for(int i=1;i<=n&&!ans;i++) if(a[i][m]=='*') ans=is_way(i,m,i,m); for(int j=1;j<=m&&!ans;j++) if(a[1][j]=='*') ans=is_way(1,j,1,j); for(int j=1;j<=m&&!ans;j++) if(a[n][j]=='*') ans=is_way(n,j,n,j); if(ans) cout<<"YES"<<endl; else cout<<"NO"<<endl; }}
0 0
- NEFU 558 DFS
- -----nefu 465 dfs
- nefu 561 方块计算(DFS)
- nefu 406
- nefu 115
- nefu 116
- nefu 84
- NEfu 639
- nefu 636
- NEFU 627
- nefu 667
- NEFU 1037
- NEFU 659
- nefu 520
- NEFU 564
- NEFU 560
- NEFU 1002
- NEFU OJ20
- CodeForces673ABear and Game
- 用户添加root 权限
- 关于final修饰符你不知道的事
- HTK
- DES加密实现(翻译自书籍《Wiley.Implementing.SSL.TLS.Using.Cryptography.and.PKI》)
- NEFU 558 DFS
- hdu2539:点球大战
- 【一天一道LeetCode】#33. Search in Rotated Sorted Array
- Android系统架构-----Android的系统体系架构
- 【Android】25、启动活动的最佳写法
- Android adb命令与操作
- GestureDetector
- 将CSV文件导入到hive数据库
- python实现nginx图形界面管理