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


你需要编写自动驾驶系统中的导航部分。在测试的一开始,试验地里没有任何障碍。你的程序会依次收到q条信息,它们的格式是以下两种之一:

? x y,表示询问从第1行第1列的格子出发,到达第x行第y列的格子最少需要移动多少次。
* x y,表示第x行第y列的格子变成了障碍格。

Input

第一行包含一个正整数T(1≤T≤5),表示测试数据的组数。

每组数据第一行包含三个正整数n,m,q(1≤n,m≤50,1≤q≤100000),表示试验地的尺寸以及信息的数量。

接下来m行,每行描述一条信息。其中1≤x,y≤n,保证每个格子不会被重复变成障碍格多次,且(1,1)不会变成障碍格。

Output

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

Sample Input

1
3 4 5
? 2 2
* 1 2
? 2 2
* 2 1
? 2 2

Sample Output

2
2
-1

Author

Claris

Source

"字节跳动杯"杭州电子科技大学第十九届程序设计竞赛
 
 
这是一个图比较小 但是询问次数非常多的普通bfs  比赛的时候没有想出来很可惜  
#include<bits/stdc++.h>
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+5
int dx[]={,,,-};
int dy[]={,,-,};
int n,m,ex,ey;
int d[N][N];
int mp[N][N];
struct node
{
int x,y;
};
void bfs()
{
CLR(d,-);
d[][]=;
node u,v;
u.x=;
u.y=;
queue<node>q;
q.push(u);
while(!q.empty())
{
u=q.front();q.pop();
rep(i,,)
{
node v=u;
v.x+=dx[i];
v.y+=dy[i];
if(d[v.x][v.y]!=-)continue;
if(mp[v.x][v.y]==)continue;
if( !(v.x>=&&v.x<=n&&v.y>=&&v.y<=m) )continue;
d[v.x][v.y]=d[u.x][u.y]+;
q.push(v);
}
}
}
int main()
{
int cas;
RI(cas);
while(cas--)
{
CLR(mp,);
int q;
RIII(n,m,q);
bfs();
while(q--)
{
char s[];
RS(s); RII(ex,ey);
if(s[]=='*')
{
mp[ex][ey]=;
bfs();
}
else printf("%d\n",d[ex][ey]);
}
}
return ;
}
 
 
 
 
 
 
 
 
 
 
 

自动驾驶系统 bfs的更多相关文章

  1. zzL4自动驾驶中感知系统遇到的挑战及解决方案

    本次分享的大纲: Perception Introduction Sensor Setup & Sensor Fusion Perception Onboard System Percepti ...

  2. 自动驾驶汽车数据不再封闭,Uber 开源新的数据可视化系统

    日前,Uber 开源了基于 web 的自动驾驶可视化系统(AVS),称该系统为自动驾驶行业带来理解和共享数据的新方式.AVS 由Uber旗下负责自动驾驶汽车研发的技术事业群(ATG)开发,目前该系统已 ...

  3. 波音,自动驾驶bug未修复,致346人丧生!5个月内两次坠毁!其中,包括8名中国公民

    一,波音737 MAX再次坠毁 继2018年10月29日,印尼波音737MAX飞机坠入爪哇海,导致178名乘客不幸遇难后,时隔不足5月,上周日,埃塞俄比亚航空公司一架波音737MAX客机在飞往肯尼亚途 ...

  4. [原]JSBSim 自动驾驶(浅出)

    jsbsim的脚本文件分为几大类: 1.系统脚本: systems  包含通用飞机各部分功能模块组件以及自动飞行控件:Autopilot.xml  和 自动飞行的算法控件:GNCUtilities.x ...

  5. zz“老司机”成长之路:自动驾驶车辆调试实践

    随着自动驾驶技术的发展,一辆新车从被改装到上路需要经过的调试流程也有了许多提升.今天,我希望结合自己之前的调车经验来跟大家分享一下我们是如何将系统的各个模块逐步上车.调试.集成,进而将一辆“新手”车培 ...

  6. Google Waymo 2017自动驾驶安全技术报告(一)

    2017年10月Google Waymo向美国交通部提交了一份43页的安全报告,报告中详细说明了Waymo如何装备和训练自动驾驶车辆,从而避免驾驶中的一般和意外情况发生.这份报告对Waymo的自动驾驶 ...

  7. Google Waymo自动驾驶安全技术报告(二)

    Waymo的技术在公开道路上.封闭测试场.仿真器进行了广泛的测试,所以可以保证自动驾驶系统的每一部分在其ODD内都有强大.可靠.安全的处理能力. Waymo的自动驾驶系统由三个相互独立.严格测试的子系 ...

  8. 【转】从技术和成本算笔账,自动驾驶L3过渡到L4有多难?

    转自:http://www.sohu.com/a/160479216_121787 从技术和成本算笔账,自动驾驶L3过渡到L4有多难? 2017-07-28 09:34 英伟达解决方案架构师程亚冰认为 ...

  9. 发布AI芯片昆仑和百度大脑3.0、L4自动驾驶巴士量产下线,这是百度All in AI一年后的最新答卷...

    机器之心报道,作者:李泽南. 去年的 7 月 5 日,百度在北京国际会议中心开办了首届「AI 开发者大会」.在会上,百度首次喊出了「All in AI」的口号.一年的时间过去了,今天在同样地点举行的第 ...

随机推荐

  1. 单点登录SSO的原理及实现方式总结

      核心思想   用户信息的集中存储(全局Cooike.集中式Session.Json Web Token.Redis缓存服务器.自定义SSO服务器)   认证(Filter中执行)   登出(不同站 ...

  2. oracle 新增一条数据时设置id自增

    CREATE SEQUENCE test_seq    --创建一个test_seq序列INCREMENT BY 1   --每次加1START WITH 1     --从1开始NOMAXVALUE ...

  3. npm i 和 npm install 的区别

    实际使用的区别点主要如下(windows下): 1. 用npm i安装的模块无法用npm uninstall删除,用npm uninstall i才卸载掉 2. npm i会帮助检测与当前node版本 ...

  4. 配置nginx php上传大文件

    配置nginx php上传大文件: 1. 修改PHP配置文件中的三项:vim /usr/local/php/etc/php.ini 1.file_uploads 设为On,允许通过HTTP上传文件 2 ...

  5. 本地http://localhost打不开怎么办

    本地http://localhost打不开怎么办 出自:http://jingyan.baidu.com/article/c45ad29cebb95a051753e2b6.html 学过计算机的都知道 ...

  6. canvas 保存bitmap到本地

    File f = new File("/sdcard/DCIM/Camera/0.png"); FileOutputStream fos = null; try { fos = n ...

  7. 新建maven项目错误处理

    1.如果新建maven 项目确省maven dependencies,则在存在问题工程的.classpath末尾 加上 <classpathentry kind="con"  ...

  8. 手机端rem 用法

    !function(n){ var e=n.document, t=e.documentElement, i=720, d=i/100, o="orientationchange" ...

  9. tomcat 报错处理

    一.tomcat报错找不到资源集市 原因:tomcat的配置文件sever.xml 里的 docbase配置被Eclispe修改了 解决方法:修改回来 <Context docBase=&quo ...

  10. ajax--参数映射方式实现阴影效果

    注:通过json对象的方式传递参数,参数具体信息由json对象来封装,参数封装到对象中再进行映射(参数映射) shadow.js //使用参数映射方式实现参数设置/* option:参数对象,封装所有 ...