博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自动驾驶系统 bfs
阅读量:5088 次
发布时间:2019-06-13

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

一家科技公司有一块试验地用于测试自动驾驶系统。试验地由n×m个格子组成,从上到下依次编号为第1n行,从左到右依次编号为第1m列。试验车位于其中的某个格子上,每次自动驾驶系统可以控制汽车往上下左右移动一格。汽车不能走出边界,也不能碰到障碍格。

你需要编写自动驾驶系统中的导航部分。在测试的一开始,试验地里没有任何障碍。你的程序会依次收到q条信息,它们的格式是以下两种之一:
? x y,表示询问从第1行第1列的格子出发,到达第x行第y列的格子最少需要移动多少次。
* x y,表示第x行第y列的格子变成了障碍格。

Input

第一行包含一个正整数
T(1T5),表示测试数据的组数。
每组数据第一行包含三个正整数n,m,q(1n,m50,1q100000),表示试验地的尺寸以及信息的数量。
接下来m行,每行描述一条信息。其中1x,yn,保证每个格子不会被重复变成障碍格多次,且(1,1)不会变成障碍格。

Output

对于每个询问输出一行一个整数,即最少移动次数,若无法到达请输出
1

Sample Input

13 4 5? 2 2* 1 2? 2 2* 2 1? 2 2

Sample Output

22-1

Author

Claris

Source

"字节跳动杯"杭州电子科技大学第十九届程序设计竞赛
 
 
这是一个图比较小 但是询问次数非常多的普通bfs  比赛的时候没有想出来很可惜  
#include
using namespace std;//input#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define repp(i,a,b) for(int i=(a);i>=(b);i--)#define RI(n) scanf("%d",&(n))#define RII(n,m) scanf("%d%d",&n,&m);#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)#define RS(s) scanf("%s",s);#define ll long long#define inf 0x3f3f3f3f#define REP(i,N) for(int i=0;i<(N);i++)#define CLR(A,v) memset(A,v,sizeof A)//#define N 500+5int dx[4]={
0,1,0,-1};int dy[4]={
1,0,-1,0};int n,m,ex,ey;int d[N][N];int mp[N][N];struct node{ int x,y;};void bfs(){ CLR(d,-1); d[1][1]=0; node u,v; u.x=1; u.y=1; queue
q; q.push(u); while(!q.empty()) { u=q.front();q.pop(); rep(i,0,3) { node v=u; v.x+=dx[i]; v.y+=dy[i]; if(d[v.x][v.y]!=-1)continue; if(mp[v.x][v.y]==1)continue; if( !(v.x>=1&&v.x<=n&&v.y>=1&&v.y<=m) )continue; d[v.x][v.y]=d[u.x][u.y]+1; q.push(v); } }}int main(){ int cas; RI(cas); while(cas--) { CLR(mp,0); int q; RIII(n,m,q); bfs(); while(q--) { char s[4]; RS(s); RII(ex,ey); if(s[0]=='*') { mp[ex][ey]=1; bfs(); } else printf("%d\n",d[ex][ey]); } } return 0;}
View Code

 

 
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/bxd123/p/10658018.html

你可能感兴趣的文章
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
list 容器 排序函数.xml
查看>>
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Mongo自动备份
查看>>
cer证书签名验证
查看>>
synchronized
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
QML学习笔记之一
查看>>
App右上角数字
查看>>