博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
走出迷宫
阅读量:4350 次
发布时间:2019-06-07

本文共 1435 字,大约阅读时间需要 4 分钟。

总时间限制: 
1000ms
内存限制: 
65536kB
描述

当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。 

假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路。

输入
第一行是两个整数n和m(1<=n,m<=100),表示迷宫的行数和列数。
接下来n行,每行一个长为m的字符串,表示整个迷宫的布局。字符'.'表示空地,'#'表示墙,'S'表示起点,'T'表示出口。
输出
输出从起点到出口最少需要走的步数。
样例输入
3 3S#T.#....
样例输出
   
6
  
  BFS,注意记录步数
1 #include
2 using namespace std; 3 char a[505][505]; 4 int mx[5]={
0,-1,1,0,0}; 5 int my[5]={
0,0,0,-1,1}; 6 int vis[505][505]; 7 int N,M; 8 inline void ser(); 9 int x,y;10 int ANS=1e9;11 queue
Qx,Qy,Qs;12 int main(){13 scanf("%d%d",&N,&M);14 for(int i=1;i<=N;i++){15 scanf("%s",a[i]+1);16 for(int j=1;j<=M;j++){17 if(a[i][j]=='S'){18 x=i; y=j;19 }20 }21 }22 Qx.push(x); Qy.push(y), Qs.push(0);23 vis[x][y]=1;24 ser();25 return 0;26 }27 inline void ser(){28 while(Qx.size()!=0&&Qy.size()!=0){29 int nowx=Qx.front();30 int nowy=Qy.front();31 int nows=Qs.front();32 Qx.pop(); Qy.pop(); Qs.pop();33 int tox,toy;34 for(int i=1;i<=4;i++){35 tox=nowx+mx[i];36 toy=nowy+my[i];37 if(vis[tox][toy]==0&&1<=tox&&tox<=N&&1<=toy&&toy<=M&&a[tox][toy]!='#'){38 vis[tox][toy]=1;39 if(a[tox][toy]=='T'){40 cout<
<

 

 

转载于:https://www.cnblogs.com/CXCXCXC/p/4913062.html

你可能感兴趣的文章
2018-07-13E-R图设计数据库+三大范式+修改用户密码+分配用户权限
查看>>
移动广告行业的复苏
查看>>
Cookie机制,session机制
查看>>
nginx配置错误
查看>>
47 【golang】mysql操作
查看>>
Using ARITHABORT with LLBLGen
查看>>
增量模型与快速模型的异同。
查看>>
Hanoi双塔问题(简单的枚举)
查看>>
lattice 黑盒子的生成和使用(Creating Your Own Black Box Modules)
查看>>
NDK以及C语言基础语法(一)
查看>>
ES6/ES2015核心内容 import export
查看>>
Day4-文件,json字典文件互转,函数
查看>>
vector引用参数
查看>>
NTC温度采集之数据拟合——freemat软件实现
查看>>
maven私服nexus3.9安装配置
查看>>
U盘出现大量乱码文件,并且不能彻底删除
查看>>
UEditor添加一个普通按钮及其他使用注意事项
查看>>
C语言的第一次实验报告
查看>>
spring JDBC 批量插入数据
查看>>
状态压缩题目小结
查看>>