BFS迷宫问题
链接:https://ac.nowcoder.com/acm/challenge/terminal
来源:牛客网
输入描述:
本题包含多组数据。
每组数据先输入两个数字N,M
接下来N行,每行M个字符,表示地图的状态。
数据范围:
2<=N,M<=500
保证有一个起点S,同时保证有一个终点E.
输出描述:
每组数据输出一行,如果小明能够从起点走到终点,那么输出Yes,否则输出No
输出
Yes
No 解题思路:经典BFD
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
inline int read() {int x=,f=;char c=getchar();while(c!='-'&&(c<''||c>''))c=getchar();if(c=='-')f=-,c=getchar();while(c>=''&&c<='')x=x*+c-'',c=getchar();return f*x;}
typedef long long ll;
const int maxn = 1e5+;
char a[][];
int vis[][];
struct node{
int x,y;
};
int d[][]={,,,-,,,-,};
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
node S;//记录起点
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
cin>>a[i][j];
if(a[i][j]=='S'){
S.x=i;
S.y=j;
}
}
}
int flag=;
memset(vis,,sizeof(vis));//清空标记数组
queue<node>q;//定义队列
q.push(S);//弹入起点
while(!q.empty()){
node temp=q.front();//判断
q.pop();//弹出站首
if(a[temp.x][temp.y]=='E'){
flag=;
break;
}
vis[temp.x][temp.y]=;
for(int i=;i<;i++){
node R;
R.x=temp.x+d[i][];
R.y=temp.y+d[i][];
if(R.x>=&&R.x<=n&&R.y>=&&R.y<=m&&vis[R.x][R.y]==&&a[R.x][R.y]!='#'){
vis[R.x][R.y]=;
q.push(R);//入栈等待判断
}
}
}
if(flag==){
printf("Yes\n");
}
else{
printf("No\n");
}
}
return ;
}
AC代码2;
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
char map[][];
char s[];
bool vis[][];
struct Node{
int x,y;
};
int d[][]={,,,-,,,-,};
int main()
{
int N,M;
while(scanf("%d%d",&N,&M)!=EOF)
{
Node S;
gets(s);//getchar();
for(int i=;i<=N;i++){
for(int j=;j<=M;j++){
scanf("%c",&map[i][j]);
if(map[i][j]=='S'){
S.x=i;
S.y=j;
}
}
gets(s);
}
int flag=;
memset(vis,,sizeof(vis));
queue<Node>q;
q.push(S);
while(!q.empty())
{
Node temp=q.front();
q.pop();
if(map[temp.x][temp.y]=='E')
{flag=;break;}
vis[temp.x][temp.y]=;
for(int i=;i<;i++)
{
Node R;
R.x=temp.x+d[i][];R.y=temp.y+d[i][];
if(R.x<||R.y<||R.x>N||R.y>M) continue;
if(!vis[R.x][R.y]&&map[R.x][R.y]!='#')
{
vis[R.x][R.y]=;
q.push(R);
}
}
}
if(flag) printf("Yes\n");
else printf("No\n");
}
return ;
}
BFS迷宫问题的更多相关文章
- bfs—迷宫问题—poj3984
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20591 Accepted: 12050 http://poj ...
- uva 816 - Abbott's Revenge(有点困难bfs迷宫称号)
是典型的bfs,但是,这个问题的目的在于读取条件的困难,而不是简单地推断,需要找到一种方法来读取条件.还需要想办法去推断每一点不能满足条件,继续往下走. #include<cstdio> ...
- BFS迷宫搜索路径
#include<graphics.h> #include<stdlib.h> #include<conio.h> #include<time.h> # ...
- HDU2579(bfs迷宫)
Dating with girls(2) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- bfs迷宫
链接:https://ac.nowcoder.com/acm/contest/338/BSleeping is a favorite of little bearBaby, because the w ...
- 【OpenJ_Bailian - 2790】迷宫(bfs)
-->迷宫 Descriptions: 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不 ...
- ACM/ICPC 之 BFS-简单障碍迷宫问题(POJ2935)
题目确实简单,思路很容易出来,难点在于障碍的记录,是BFS迷宫问题中很经典的题目了. POJ2935-Basic Wall Maze 题意:6*6棋盘,有三堵墙,求从给定初始点到给定终点的最短路,输出 ...
- (BFS)poj2935-Basic Wall Maze
题目地址 题目与最基本的BFS迷宫的区别就是有一些障碍,可以通过建立三维数组,标记某个地方有障碍不能走.另一个点是输出路径,对此建立结构体时要建立一个pre变量,指向前一个的下标.这样回溯(方法十分经 ...
- 3299: [USACO2011 Open]Corn Maze玉米迷宫
3299: [USACO2011 Open]Corn Maze玉米迷宫 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 137 Solved: 59[ ...
随机推荐
- Oracle使用记录
1.连接数据库的方式 sqlplus system/system@127.0.0.1:1521/orcl #远程用户名密码连接 sqlplus dbsnmp/oracle; #本地用户名密码连接 sq ...
- Pycharm调试django项目时发现断点失效
解决方法: 第一步: 第二步: 点击 Edit Configuration 第三步 : 点击 + 选择python 填写相关参数信息 或者 点击ok 完成配置 重启 IDE 注意 重启IDE ...
- alert警告框点击确定后自动提交表单
转载于 :https://zhidao.baidu.com/question/619375120140398412.html 在页面中有多个input type="text"的文 ...
- css动画 自动打字,让你的文字飞舞起来
自动打字的效果 非一般的炫酷 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- Java“被迫”退出争霸,Python继续霸占首位!老牌程序员:我不服
2019年转眼已经接近尾声,如果盘点下2019年最火的语言,除了Python还能有谁?你心中的王者语言又是谁? 这一年Python风光无限 这一年JAVA走向右边 这一年,我们都很感慨,你呢? 关于P ...
- tomcat在win10系统中安装失败的问题,修改tomcat内存
自己以前在其他系统上安装tomcat服务都没有问题,但是在win10系统上安装就经常出现问题,自己总结了一下安装步骤: 1.首先需要配置环境变量, CATALINA_HOME 2.修改service. ...
- 染色板QPlette
QPalette::Window 背景颜色 QPalette::WindowText 文本颜色 QPalette::Background 同QPalette::Window QPalette::For ...
- 归并非递归、快排递归及非递归的C++实现及时间效率对比。。
今天看剑指offer突然发现下学期都要去面试了,还没自己实现过快排非递归和归并非递归,这怎么能行呢,于是就写了一下. (虽然有点卡壳,又回去翻了下算导,还是顺利写出来了) 先放图: 一亿数据量: #p ...
- 解决linux乱码问题
echo "LANG="zh_CN.UTF-8" >> /etc/sysconfig/i18n yum -y install kde-l10n-Chinese ...
- Could not set property of class with value There is no setter for property named
检查entity中类的属性与MAPPER中的resultMap属性是否一致