Description
你手中有一份交大的地图来帮助你去上课。交大的地形十分复杂,有四种地形: (你只能上下左右移动)

通路 ”.”:可以上下左右移动; (英文句号 . )

桥 ”|”:只能上下移动; (C++中的或 | )

桥 ”-“:只能左右移动; (减号)

墙 “*“: 不能通行。 (乘号)

现在你在地图上的(x1, y1)位置,上课地点在(x2, y2)处,请你帮你找出一条路径去上课。由于时间紧迫,你希望知道他所在的位置离上课地点有多远。你只需输出小明当前位置离上课地点的最短距离。如果无法到达上课地点,请输出-1。输入数据保证起点和终点是通路 “.“

Input Format
第1行: n, m 给出交大地图的长和宽,用空格分隔

第2行: x1, y1, x2, y2 给出小明的位置(x1, y1) 和目的地(x2, y2),每两个数中间用空格分隔。x表示行,y表示列。

第3到n+2行: 每行m个字符,描述了交大的地形。每个字符之间没有空格。

Output Format
一行,输出最短距离。

数据范围
对于100%的数据,n,m<=100.

Sample Input
4 5
2 2 3 4

.
.


Sample Output
7
Sample Input
4 5
1 3 2 5
…-|
.|.
.|-.
…-.
Sample Output
7
Sample Input
3 3
1 3 3 1
.
.
.
..
Sample Output
-1
Sample Input
2 2
1 1 2 2
.

|.
Sample Output
-1

#include <iostream>
#include <queue>
using namespace std;struct node {int x;int y;int len;
};
queue<node> q;int main() {int n, m, x1, y1, x2, y2;char arr[105][105];bool pass[105][105] = { false };int xx[4] = { 1,0,0,-1 };//下、右、左、上int yy[4] = { 0,1,-1,0 };int re = -1;cin >> n >> m >> x1 >> y1 >> x2 >> y2;char tmp;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cin >> arr[i][j];}}node s;s.x = x1;s.y = y1;s.len = 0;q.push(s);pass[x1][y1] = true;while (!q.empty()){node now = q.front();q.pop();for (int i = 0; i < 4; ++i){if (i == 0 || i == 3) {if (arr[now.x][now.y] == '-') continue;}if (i == 1 || i == 2) {if (arr[now.x][now.y] == '|') continue;}node New;New.x = now.x + xx[i];New.y = now.y + yy[i];New.len = now.len + 1;if (New.x<1 || New.y<1 || New.x>n || New.y>m || pass[New.x][New.y] || arr[New.x][New.y] == '*')continue;if (i == 0 || i == 3) {if (arr[New.x][New.y] == '-') continue;}if (i == 1 || i == 2) {if (arr[New.x][New.y] == '|') continue;}q.push(New);pass[New.x][New.y] = true;if (New.x == x2 && New.y == y2) {cout << New.len;return 0;}}}cout << -1;return 0;
}

SJTU规划上课路线相关推荐

  1. 零基础java培训如何规划学习路线

    学习java的同学越来越多,很多小伙伴都想知道零基础如何学习java?如何安排学习路线,零基础java培训如何规划学习路线?那么针对以上问题,今天小编特意分享这篇Java学习指南,希望对那些想学Jav ...

  2. 无脑单细胞竟会走迷宫、规划交通路线,这种难以归类的生物重定义了智能

    本文转载自公众号SME 在电子游戏的一般套路设定下,蠢萌的史莱姆总是那个最低级的怪物. 它们几乎没有智商可言,攻击手段单一且总是以动技能著称,正所谓"烂泥扶不上壁". 而纵观各个类 ...

  3. python难度如何_入门Python学习难吗怎样规划学习路线

    入门Python学习难吗?怎样规划学习路线?Python是一种跨平台的计算机程序设计语言.Python现在在各个邻域都有十分广泛的应用,在近几年的上升趋势十分明显,未来的发展前景也十分广阔.现在就有许 ...

  4. Android高德地图配置及实现定位,目的地路线规划的路线绘制

    1.第一步进行高德地图的配置 1)高德地图控制台https://lbs.amap.com/dev/index创建应用和所需要的key(注意applicationId 和 签名中的SHA1 正确,比如用 ...

  5. python外环是什么意思_爬取上海地铁站并且规划出行路线

    源码源码:源码链接 需求和目标 爬取网站:上海地铁的百科词条 获取的爬虫数据结果保存样式如下 { '莘庄站': {'subway': ['上海地铁1号线', '上海地铁5号线'], 'neibour' ...

  6. AI 旅行工具大盘点!31 款 AI 旅行行程规划工具,一键规划旅行路线!

    0. 未来百科 未来百科(https://nav.6aiq.com),是一个知名的AI产品导航网站 -- 为发现全球优质AI工具而生 .目前已 聚集全球3000+优质AI工具产品 ,旨在帮助用户发现全 ...

  7. 【百度地图系列】规划驾车路线和途径点及判断车辆路线偏移

    star: 项目需求需要利用百度地图构建路线并支持设置途径点,以及可以实时监控车辆是否偏移路线:两种方案. 写了比较完整的注释了,替换ak可直接看效果,规划驾车路线和途径点及判断车辆路线偏移 源码: ...

  8. vue[高德地图行车路径规划以及路线记录绘制操作]

    最近的一个项目中需要根据需求将地图上画出一条高速公路,然后将这条高速公路的行车轨迹绘制成一条带有颜色路线以便后续插入内容. 看遍了不少高德地图的api内容以及搜索了不少的网上资源,发现可以通过路径规划 ...

  9. 碳云智能想做的,是规划生命路线

    雷锋网按:一家公司在做什么,其创始人说的最靠谱.除了题目,本文内容都由雷锋网(公众号:雷锋网)小编编辑自碳云智能CEO王俊在1月5日发布会上的演讲.在不改变原意的基础上,雷锋网做了比较多的删减和编辑. ...

最新文章

  1. AI 综述专栏 | 超长综述让你走近深度人脸识别
  2. PIC单片机入门_PICC头文件介绍
  3. ROS学习之节点间话题通信的
  4. Shell脚本中的函数、数组
  5. 如何使用VS2019编译QT项目
  6. Python繁体中文和简体中文互转
  7. android程序劫持持程序,大谈android安全2——Activity劫持的防范程序
  8. 渗透工具TotalPass:TotalPass 是一款默认口令/弱口令扫描工具
  9. 火星坐标系转北京54坐标方法
  10. Java——单例模式:饿汉、懒汉模式
  11. 元气骑士 自建服务器,元气骑士远程联机步骤教程一览
  12. U3D场景制作规范(转)
  13. 【学习笔记】噬菌体学
  14. 哈工大计算机网络-作业讲解
  15. 关于微信公众平台本地测试ip如何加入IP白名单
  16. html 中圆角怎么写,html中的圆角
  17. rewind java_Java IntBuffer rewind()用法及代码示例
  18. 客户成功案例 | 从半导体到终端产品:恩智浦(NXP),利用数据驱动“移动”未来
  19. IC验证培训——实战SV验证学习(lab6)
  20. docker制作hiredis环境:libhiredis.so.0.13: cannot open shared object file

热门文章

  1. python处理嵌套字典写入Excel
  2. Swift 优雅的网络请求Moya
  3. android 布局排排,[android]如何使LinearLayout布局从右向左水平排列,而不是从左向右排列...
  4. vue中excel的编辑、导入、导出
  5. vue实现一个日历切换功能
  6. 终于有人把“嵌入式人工智能”讲明白了
  7. 网络工程基础- -mac地址以及端口安全
  8. #Codeforces Round #687 Div. 2 _D. XOR-gun
  9. word文档及其历史版本的备份
  10. Google colab下载文件夹(打包文件下载)