博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
B.迷宫(BFS)
阅读量:5371 次
发布时间:2019-06-15

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

题目描述

求起点到终点的最少步数,这种是典型的BFS题,O(n)的时间复杂度。

条件:图中会有一把钥匙,一扇门,门在没有钥匙时无法通行。

做两次BFS,从起点开始,从有钥匙的地方开始。利用标记写一个BFS就可以了。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 8 char map[505][505]; 9 bool used[505][505][2]={
0};10 int fx[4][2]={
1,0,-1,0,0,1,0,-1};11 typedef struct Node{12 int x,y,k,step;13 }node;14 queue
qe;15 int bfs()16 {17 while(!qe.empty())18 { node t=qe.front();19 qe.pop();20 for(int i=0;i<4;i++)21 { int key=t.k;22 int tx=t.x+fx[i][0];23 int ty=t.y+fx[i][1];24 if(map[tx][ty]=='W'||used[tx][ty][key]==1) continue;25 if(map[tx][ty]=='D'&&key==0) continue;26 if(map[tx][ty]=='K') key=1;27 used[tx][ty][key]=1;28 qe.push((node){tx,ty,key,t.step+1});29 if(map[tx][ty]=='E') return t.step+1;30 }31 }32 return -1;33 }34 int main()35 {36 int n,m,ans;37 scanf("%d%d",&n,&m);38 for(int i=0;i

 

转载于:https://www.cnblogs.com/lnu161403214/p/8444512.html

你可能感兴趣的文章
java中new一个对象和对象=null有什么区别
查看>>
字母和数字键的键码值(keyCode)
查看>>
01_1_准备ibatis环境
查看>>
JavaScript中的BOM和DOM
查看>>
spring注入Properties
查看>>
jmeter(五)创建web测试计划
查看>>
1305: [CQOI2009]dance跳舞 - BZOJ
查看>>
jmeter多线程组间的参数传递
查看>>
hash储存机制
查看>>
OpenLayers绘制图形
查看>>
洛谷 P1991 无线通讯网
查看>>
数据库第1,2,3范式学习
查看>>
《Linux内核设计与实现》第四章学习笔记
查看>>
Docker 安装MySQL5.7(三)
查看>>
CSS: caption-side 属性
查看>>
CSS3中box-sizing的理解
查看>>
linux下编译安装nginx
查看>>
windows超过最大连接数解决命令
查看>>
12个大调都是什么
查看>>
angular、jquery、vue 的区别与联系
查看>>