描述

当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。
假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路。

输入
第一行是两个整数n和m(1<=n,m<=100),表示迷宫的行数和列数。
接下来n行,每行一个长为m的字符串,表示整个迷宫的布局。字符'.'表示空地,'#'表示墙,'S'表示起点,'T'表示出口。
输出
输出从起点到出口最少需要走的步数。
DFS
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>using namespace std;int n,m,walk[200][200],sx,sy,ex,ey,ans=0x3f3f3f3f;
char s[200][200];int row[4]={-1,0,1,0};
int col[4]={0,1,0,-1};void DFS(int x,int y,int sum)
{if(x==ex&&y==ey){if(sum<ans)ans=sum;return;}for(int i=0;i<=3;i++){int xx=x+row[i];int yy=y+col[i];if(xx>=0&&xx<m&&yy>=0&&yy<n&&walk[xx][yy]>sum+1&&s[xx][yy]!='#'){walk[xx][yy]=sum+1;DFS(xx,yy,sum+1);}}return;
}
int main()
{cin>>m>>n;memset(walk,0x3f,sizeof(walk));for(int i=0;i<m;i++){for(int j=0;j<n;j++){cin>>s[i][j];if(s[i][j]=='S'){sx=i;sy=j;}if(s[i][j]=='T'){ex=i;ey=j;}}}walk[sx][sy]==0;DFS(sx,sy,0);cout<<ans<<endl;return 0;
}

BFS

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <queue>using namespace std;const int maxn=100;
struct node{int x,y;int step;
}S,T,Node;int n,m;
char maze[maxn][maxn];
bool inq[maxn][maxn];
int X[4]={0,0,1,-1};
int Y[4]={1,-1,0,0};bool test(int x,int y)
{if(x>=n||x<0||y>=m||y<0)    return false;if(maze[x][y]=='#'||inq[x][y]==true)    return false;return true;
}int BFS()
{queue<node>q;q.push(S);while(!q.empty()){node top=q.front();q.pop();if(top.x==T.x&&top.y==T.y){return top.step;}for(int i=0;i<4;i++){int newX=top.x+X[i];int newY=top.y+Y[i];if(test(newX,newY)){Node.x=newX;Node.y=newY;Node.step=top.step+1;q.push(Node);inq[newX][newY]=true;}}}return -1;
}int main()
{scanf("%d%d",&n,&m);for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>maze[i][j];}}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(maze[i][j]=='S'){S.x=i;S.y=j;}if(maze[i][j]=='T'){T.x=i;T.y=j;}}}S.step=0;printf("%d\n",BFS());return 0;
}

转载于:https://www.cnblogs.com/Fy1999/p/9011519.html

6264:走出迷宫(DFS和BFS)相关推荐

  1. 【NOI】6264:走出迷宫/ 2.5基本算法之搜索

    6264:走出迷宫 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会 ...

  2. 信息学奥赛一本通 1254:走出迷宫 | OpenJudge NOI 2.5 6264:走出迷宫

    [题目链接] ybt 1254:走出迷宫 OpenJudge NOI 2.5 6264:走出迷宫 [题目考点] 1. 广搜 迷宫问题 [解题思路] 广搜,迷宫问题模板题. 当数据量很小时,用深搜的方法 ...

  3. 6264:走出迷宫——BFS

    描述 当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单. 假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路. 输入 第一行 ...

  4. 6264:走出迷宫 (BFS,板子题)

    描述 当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单. 假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路. 输入 第一行 ...

  5. NOI题库2.5 6264 走出迷宫

    描述 当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单. 假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路. 输入 第一行 ...

  6. 【NOI】6264 走出迷宫

    描述 当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单. 假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路. 输入 第一行 ...

  7. POJ 6264:走出迷宫

    " Ctrl AC!一起 AC!" 题目:忘题戳这 分析:一道典型的寻路广搜模板题,见博主的往日分析 AC代码: #include<iostream> #include ...

  8. 搜索4--noi6264:走出迷宫

    搜索4--noi6264:走出迷宫 一.心得 可以去看看别人的代码,吸收精华 二.题目 6264:走出迷宫 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 当 ...

  9. 信息学奥赛一本通(1254:走出迷宫)

    1254:走出迷宫 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 9105     通过数: 4245 [题目描述] 当你站在一个迷宫里的时候,往往会被错综复杂的 ...

最新文章

  1. 不是“重复”造轮子,百度飞桨框架2.0如何俘获人心
  2. 海外博士一般朝九晚五,国内博士动辄十几个小时科研时间。为什么普遍认为海外博士水平比较高?...
  3. 24-Logistic Regression
  4. 2021巢湖第一中学高考成绩查询,2021年巢湖高中录取分数线是多少及高中排名榜...
  5. 中国的EMM市场迎来爆发期?
  6. ABAP文档生成工具
  7. XML数据岛(XML Data Island)(只适用于ie)
  8. 无废话XML--XML约束(DTD)
  9. python中fd和rt是什么意思_python中fd()是什么
  10. 手绘流程图讲解spark是如何实现集群的高可用
  11. oracle库锁表处理,oracle 数据库锁表处理 ORA-00031
  12. deepin终端下载速度超慢解决方案
  13. 指定 年-月-日 将其封装tree树状结构
  14. 简单的树遍历枚举器v0.2-挑战一个程序员到底能多懒- 添加广度优先遍历
  15. 脑皮质算法(2)一种基于新皮层网格细胞的智能和皮质功能的框架
  16. consul connect envoy 启动acls和tls后,grpc连接异常
  17. Java开发自行车管理项目要求_java毕业设计_springboot框架的公共自行车租赁管理...
  18. 天猫服饰新推“良品臻选”,请了一群挑剔的女人给服装“挑刺”
  19. VS2008简体中文版下载
  20. 高中数学一轮复习逆袭必要学习方法

热门文章

  1. 敏捷开发:软件与文档
  2. html前端 echarts图表使用详解
  3. Linux开发 python引用自定义的模块
  4. python py生成及调用pyd(so)文件
  5. elasticsearch 5.x Delete By Query API(根据条件删除)
  6. pat 团体赛练习题集 L2-008. 最长对称子串
  7. 微信小程序篇(微信小程序的支付)
  8. 从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三)
  9. find的命令的使用和文件名的后缀
  10. Android中的windowSoftInputMode属性详解