codevs 1215_迷宫_bfs
来源:互联网 发布:男朋友不喜欢狗 知乎 编辑:程序博客网 时间:2024/05/16 13:06
题目描述
在N*N的迷宫内,“#”为墙,“.”为路,“s”为起点,“e”为终点,一共4个方向可以走。从左上角((0,0)“s”)位置处走到右下角((n-1,n-1)“e”)位置处,可以走通则输出YES,不可以走则输出NO。
思路
暴力广搜,判重就可以了
O(n^2)
#include <stdio.h>#include <queue>#include <string>using namespace std;int m,start[3],end[3],a[20][20],fl=0;int dx[5]={0,1,0,-1,0};int dy[5]={0,0,1,0,-1};int bfs(){ queue<int> tx; queue<int> ty; tx.push(start[1]); ty.push(start[2]); while (!tx.empty()) { int xx=tx.front(),yy=ty.front(); tx.pop(); ty.pop(); if (xx==end[1]&&yy==end[2]) { printf("YES\n"); fl=1; return 0; } for (int i=1;i<=4;i++) if (dx[i]+xx>=1&&dx[i]+xx<=m&&dy[i]+yy>=1&&dy[i]+yy<=m&&a[dx[i]+xx][dy[i]+yy]==0) { a[dx[i]+xx][dy[i]+yy]=1; tx.push(dx[i]+xx); ty.push(dy[i]+yy); } }}int main(){ int n; scanf("%d",&n); for (int k=1;k<=n;k++) { fl=0; scanf("%d",&m); for (int i=1;i<=m;i++) { char ch[20]; scanf("%s",&ch); for (int j=1;j<=m;j++) { if (ch[j-1]=='#') a[i][j]=1; if (ch[j-1] == 's') { start[1]=i; start[2]=j; } if (ch[j-1] == 'e') { end[1]=i; end[2]=j; } } } bfs(); if (fl==0) printf("NO\n"); }}
1 0
- codevs 1215_迷宫_bfs
- codevs 2919_选择题_bfs
- codevs 2806_红与黑_bfs
- codevs 1099_字串变换_bfs
- codevs 1026_逃跑的拉尔夫_bfs
- codevs 1225_八数码难题_bfs+hash
- Codevs 1215 迷宫
- codevs 1215 迷宫
- CodeVS 1215 迷宫 题解
- codevs 1215 迷宫
- 【codevs 1215】迷宫
- 洛谷 1141_01迷宫_bfs
- Codevs 1215 迷宫 裸BFS
- Codevs 1215 迷宫(DFS)
- SSL 2352_面积_bfs
- jzoj 3450_山峰_bfs
- 洪水_纪中1235_bfs
- 回家_纪中1445_bfs+二分
- 关于chmod -R 777 /的修复
- JAVACARD开发基础规则
- JS 提交form表单
- 【深度学习:CNN】Batch Normalization解析(3)
- Jmeter的性能测试
- codevs 1215_迷宫_bfs
- Hdu1978 How many ways
- Vusial Studio提示“Cannot find or open the PDB file”解决方法
- opencv3.0 播放视频和打开摄像头代码
- java POI 操作EXCEL小例子+各种属性
- 正则表达式的20个小应用
- 前端特效之轮播
- vs2013调试caffe
- Nginx配置文件nginx.conf中文详解