3166: 共享单车

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 45  Solved: 19
[Submit][Status][Web Board]

Description

共享单车走进烟台,小明决定尝试。小明启动共享单车app,轻松地找到附近的单车。那么问题来了,到最近的那辆单车,小明大约要走多少米呢?

现在简化问题。将地图设定成一个由100米*100米的像素块组成的二维平面区域。如果一个方块内有单车,则像素块显示为字符“x”;如果此方块内是可以通行的路,则显示为“.”;再如果方块是建筑物,则显示为“*”,建筑物不能通行。

小明在地图上的位置显示为“o”,可以朝,“上”、“下”、“左”,“右”,“左上”,“左下”,“右上”,“右下”八个方向走。下图所示为一个小明站在像素方块O,如果小明向右走到X,则走100米;如果向右上走,则走141米(不需要开方)。

假设小明和单车都在方块的中央。现在给出 T 幅根据以上规则建立的地图,地图行数和列数分别为 n 和 m,请分别估算小明要走多少米才能到最近的单车?

如果计算中出现小数,那么直接舍弃。最后的输出的结果为整型。
给出的地图中至少有一辆单车,如果最终无法到达单车的位置,输出-1。

Input

第1行,T,表示下面有 T 组测试数据
对于每组测试数据
(1)第1行,n和m ,表示地图的大小;
(2)第2行开始,给出具体的地图 。

Output

T行数据
每行1个整数,表示问题的解

Sample Input

2
3 8
.....x..
.o...x..
........
8 10
.***......
.***......
.***..x...
..........
.....*****
..o..*****
.......x..
...*******

Sample Output

400
523
解题新知:可看做另一种 bfs模板
AC代码:
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
char mmap[105][105];
int dir[8][2] = {{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,-1},{1,1}};
typedef struct Node
{int x;int y;int step;
}node;
int ans;
node start,now,next;
queue<node>q;
void check()
{if(mmap[next.x][next.y] == '.'){q.push(next);mmap[next.x][next.y] = '*';}if(mmap[next.x][next.y] == 'x'){q.push(next);}
}
void bfs()
{q.push(start);while(!q.empty()){now = q.front();if(mmap[now.x][now.y] == 'x'){ans = now.step;return;}for(int i = 0;i<8;i++){next.x = now.x+dir[i][0];next.y = now.y+dir[i][1];if(dir[i][0] && dir[i][1])next.step = now.step+141;elsenext.step = now.step+100;check();}q.pop();}ans = -1;
}
int main()
{int t;scanf("%d",&t);int n,m;while(t--){memset(mmap,0,sizeof(0));while(!q.empty()){q.pop();}scanf("%d %d",&n,&m);for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>mmap[i][j];if(mmap[i][j] == 'o'){start.x = i;start.y = j;start.step = 0;}}}bfs();printf("%d\n",ans);}return 0;
}/**************************************************************Problem: 3166Language: C++Result: AcceptedTime:0 ms

[YTU](3166)共享单车 ---bfs相关推荐

  1. YTU 3166: 共享单车

    Description 共享单车走进烟台,小明决定尝试.小明启动共享单车app,轻松地找到附近的单车.那么问题来了,到最近的那辆单车,小明大约要走多少米呢? 现在简化问题.将地图设定成一个由100米* ...

  2. 快速上手微软 “群策 MARO” 平台,打造简易的共享单车场景

    作者 | 王金予.石文磊 来源 | 微软研究院AI头条(ID:MSRAsia) 编者按:2020年9月,微软亚洲研究院发布了多智能体资源优化平台"群策 MARO",并在 Githu ...

  3. DCIC共享单车数据可视化教程!

    今天选取的地图是前几天利用数字中国创新大赛提供的共享单车数据做的一个可视化效果. 很多人询问制作方法,今天给大家介绍下. 自古有云,巧妇难为无米之炊,要做这种数据可视化,数据是关键.数据去哪里找呢?可 ...

  4. 共享单车取消月卡优惠 烧钱时代正式结束

    2019独角兽企业重金招聘Python工程师标准>>> 日前,摩拜.ofo正式取消了月卡优惠,月卡价格恢复到20元/月.在摩拜客户端上,月卡的价格已从此前的每月2元.每3个月5元的优 ...

  5. 共享单车哈罗王炸连出,OFO小心沦为炮灰

    在共享单车行业寒冬之际,哈罗单车却是好消息不断,先是12月4日宣布获得3.5亿美元的D1轮融资,昨天又再次宣布完成10亿元的D2轮融资,在这大家都勒紧裤腰带过日子的寒冬里,哈罗单车可谓是王炸连出,来了 ...

  6. 趁ofo退出美市场 Uber不计成本发展共享单车

    2019独角兽企业重金招聘Python工程师标准>>> 继ofo陆续退出美国多个城市之后,Uber把握当下机会,计划不计成本重点发展共享单车,与此同时,还降低对于汽车业务关注度. 据 ...

  7. 这个冬天,将是共享单车最艰难的时刻

    自从共享单车出现以来,几乎每一天都有新的话题,无论是正面的还是负面的,围绕着这个新事物讨论的我们,最关注的还是这个行业到底能够走多远? 6月份的时候,很多人因为京沪杭街头出现土豪金配色的共享单车而被刷 ...

  8. 关于共享单车的供电问题如何解决?

    关于共享单车的供电问题如何解决? 参考文章: (1)关于共享单车的供电问题如何解决? (2)https://www.cnblogs.com/strinkbug/p/6192849.html 备忘一下.

  9. 【正一专栏】共享单车那些事儿

    共享单车那些事儿 每天早上骑着共享单车从华景这边去暨南花园上班,虽然看似短短15分钟的车程,但是路上也是惊险不断.随着共享单车使用人群的不断扩大,没有自行车道的广州,骑单车的人只能往机动车道挤,共享单 ...

最新文章

  1. 云端智能芯片GPGPU与编译器
  2. android多行文本框hint居中,在安卓等移动浏览器中placeholder中的文字不垂直居中问题...
  3. mysql 存储过程 嵌套if_mysql存储过程if嵌套if的写法
  4. .net 流(Stream) - 文件流、内存流、网络流
  5. Matlab | Matlab从入门到放弃(8)——线性代数
  6. 小余学调度:电气主接线的形式、特点、倒闸操作
  7. dsp产生正弦波 c语言,TMS320C5502多波形发生器源程序 可产生正弦波,锯齿波等
  8. 什么是BusyBox?
  9. 三重框架构建和威胁情报及时可达,山石网科发布StoneOS 5.5R9
  10. 再见了,余!额!宝!!!
  11. android设置高德的3d,高德地图3D版的使用方法
  12. (转)cocos2d-x学习笔记(九)使用shader创建鱼的投影
  13. 计算机科学工程哲学学位,2020年剑桥大学硕士读多久
  14. weblogic解析web.xml问题
  15. rtlab matlab版本,电力电子技术教学中电力仿真软件选择与应用.doc
  16. Flutter之常用组件的使用举例(中)
  17. 【FL论文阅读】Communication-Efficient Learning of Deep Networks from Decentralized Data
  18. 美团数据治理一体化实践
  19. Linux 机器重启reboot命令
  20. Java字符串面试题

热门文章

  1. 当陷进慢性质的困难处境的时候,该如何做?
  2. 嵌入式linux之Nor/Nand FLASH的读写
  3. 服装服饰行业SCRM-VIP会员营销解决方案
  4. 分类-3-生成学习-3-朴素贝叶斯模型、laplace平滑、多元伯努利事件模型、多项式事件模型
  5. 交换机端口镜像(eNSP交换机不能镜像)
  6. react native 集成腾讯语音合成TTS(android)
  7. java定义字符串数组_java字符数组用法总结,java字符串数组的定义与使用
  8. jdk1.8-64下载
  9. loadrunner 录制脚本出现乱码解决方法
  10. 中职计算机基础微课,中职计算机教育微课应用