zcmu-1185
来源:互联网 发布:淘宝手机可以开店吗 编辑:程序博客网 时间:2024/05/09 13:39
1185: 走迷宫
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 267 Solved: 101
[Submit][Status][Web Board]
Description
给一张个迷宫,问能否从起点走到终点,只能往上下左右走,不能斜着走
Input
多组测试数据,每组第一行两个正整数,分别为n和m
表示n这个迷宫有n行m列(0<n,m<10)
接着是n行m列,
'#'表示路
‘*’表示墙
‘S’表示起点
‘T’表示终点
Output
每组测试数据输出一个结果,如果能从S走到T,输出“YES”,否则输出“NO”
Sample Input
2 2S*#T3 3S*##*T##*
Sample Output
YESNO
HINT
Source
思路:最简单的dfs了,也是最基础的,通常很多的dfs都是递推。本人第一次学搜索dfs算法的一道题目。还是自己太菜了。得好好努力了
代码:
#include<cstdio>#include<cstring>const int N=15;char maze[N][N];int v[N][N];int dx[4]={1,0,-1,0};int dy[4]={0,1,0,-1};int n,m;bool flag;void dfs(int x,int y){ v[x][y]=1; if(maze[x][y]=='T'){ flag=true; return; } for(int i=0; i<4; i++) { int nx=x+dx[i]; int ny=y+dy[i]; if(0<=nx&&nx<n&&0<=ny&&ny<m&&maze[nx][ny]!='*'&&v[nx][ny]==0) { dfs(nx,ny); } }}int main(){ while(~scanf("%d%d",&n,&m)) { flag=false; memset(v,0,sizeof(v)); memset(maze,'\0',sizeof(maze)); for(int i=0; i<n; i++){ getchar(); scanf("%s",maze+i); } int p,q; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(maze[i][j]=='S'){ p=i; q=j; break; } } } dfs(p,q); if(flag)printf("YES\n"); else printf("NO\n"); } return 0;}
阅读全文
0 0
- zcmu-1185
- zcmu-1657
- zcmu-1685
- ZCMU----1776
- ZCMU----1777
- ZCMU----1778
- ZCMU----1779
- ZCMU-1731
- ZCMU-1658
- ZCMU-1654
- ZCMU-1132
- ZCMU-1037
- ZCMU-1415
- ZCMU-1036
- ZCMU-1723
- ZCMU-1608
- ZCMU-1478
- ZCMU-1750
- A conflict in the working copy obstructs the current operation
- 我的征途是星辰大海
- Android Studio----- 无法打印---log----问题总结----华为坑深
- localStorage和sessionStorage
- c 指针问题
- zcmu-1185
- Vue-Router总结
- 做项目过程中遇到的问题
- asterisk 的基本语法
- 51NOD 1095 Anigram单词
- 简单理解AOP --- 基础知识之代理模式
- 密钥基础
- 根据字符串调用同名函数
- SavaFileDialog类