ACM小组的Samsara和Staginner对中国象棋特别感兴趣,尤其对马(可能是因为这个棋子的走法比较多吧)的使用进行深入研究。今天他们又在 构思一个古怪的棋局:假如Samsara只有一个马了,而Staginner又只剩下一个将,两个棋子都在棋盘的一边,马不能出这一半棋盘的范围,另外这 一半棋盘的大小很奇特(n行m列)。Samsara想知道他的马最少需要跳几次才能吃掉Staginner的将(我们假定其不会移动)。当然这个光荣的任 务就落在了会编程的你的身上了。

Input

每组数据一行,分别为六个用空格分隔开的正整数n,m,x1,y1,x2,y2分别代表棋盘的大小n,m,以及将的坐标和马的坐标。(1<=x1,x2<=n<=20,1<=y1,y2<=m<=20,将和马的坐标不相同)

Output

输出对应也有若干行,请输出最少的移动步数,如果不能吃掉将则输出“-1”(不包括引号)。

Sample Input

8 8 5 1 4 5

Sample Output

3

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<iostream>
 5 #include<string>
 6 #include<vector>
 7 #include<stack>
 8 #include<bitset>
 9 #include<cstdlib>
10 #include<cmath>
11 #include<set>
12 #include<list>
13 #include<deque>
14 #include<map>
15 #include<queue>
16 #define ll long long
17 #define inf 0x3fffffff
18 using namespace std;
19 struct Node
20 {
21     int x,y,step;
22 };
23 queue<Node> q;
24 int n,m;
25 int a[25][25];
26 int vis[25][25];
27 int d[][2]={{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1}};
28
29 bool check(int x,int y)
30 {
31     if(x<0||x>=n||y<0||y>=m)
32         return false;
33     if(vis[x][y])
34         return false;
35     return true;
36 }
37 int bfs(int x1,int y1,int x2,int y2)
38 {
39     memset(vis,0,sizeof(vis));
40     q.push( (Node){x1,y1,0} );
41     vis[x1][y1]=1;
42     while(!q.empty())
43     {
44         Node u=q.front();
45         q.pop();
46         if(u.x==x2&&u.y==y2)//到达目标
47         {
48             return u.step;
49         }
50         for(int i=0;i<8;i++)//遍历八个方向
51         {
52              int x=u.x+d[i][0];
53              int y=u.y+d[i][1];
54              if(check(x,y))//检查边界
55              {
56                  vis[x][y]=1;
57                  q.push(Node{x,y,u.step+1});//步数加1
58              }
59         }
60     }
61     return -1;//如果不能吃掉将则输出“-1”
62 }
63
64 int main()
65 {
66     int x1,y1,x2,y2;
67     while(~scanf("%d%d%d%d%d%d",&n,&m,&x1,&y1,&x2,&y2))
68     {
69         memset(vis,0,sizeof(vis));
70        int ans= bfs(x2,y2,x1,y1);
71         printf("%d\n",ans);
72     }
73     return 0;
74 }

View Code

转载于:https://www.cnblogs.com/Roni-i/p/7404895.html

B - ACM小组的古怪象棋 【地图型BFS+特殊方向】相关推荐

  1. (CSU - 1224)ACM小组的古怪象棋

    (CSU - 1224)ACM小组的古怪象棋 Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 446 Solved: 193 Description ...

  2. CSU 1224: ACM小组的古怪象棋(BFS)

    ACM小组的古怪象棋 Time limit:1000 ms Memory limit:131072 kB OS:Windows Problem Description ACM小组的Samsara和St ...

  3. CSU 1224 ACM小组的古怪象棋

    E - ACM小组的古怪象棋 Time Limit:1000MS    Memory Limit:131072KB    64bit IO Format:%lld & %llu SubmitS ...

  4. coj_1224: ACM小组的古怪象棋

    Description ACM小组的Samsara和Staginner对中国象棋特别感兴趣,尤其对马(可能是因为这个棋子的走法比较多吧)的使用进行深入研究.今天他们又在 构思一个古怪的棋局:假如Sam ...

  5. 交际过程的两个基本环节_小学语文“三学小组”模式口语交际课型教学流程及基本要求...

    小学语文"三学小组"模式口语交际课型 教学流程及基本要求 一.教学流程 小学语文口语交际课"三学小组"模式,即每一个口语交际的学习有三个阶段:预学.互学.评学. ...

  6. java 地图模式_MapL 实现了百度地图定位以及感应方向和各种模式切换的 Demo Java Develop 238万源代码下载- www.pudn.com...

    文件名称: MapL下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Windows_Unix 文件大小: 5310 KB 上传时间: 2015-05-30 下载次数: 0 提 供 者 ...

  7. 【总结】最好的CV学习小组,超200个课时+10个方向+30个项目,从理论到实践全部系统掌握...

    2022年有三AI-CV夏季划已经正式发布,有三AI-CV夏季划是我们最系统最重要的深度学习和计算机视觉学习计划小组,目标是在新手入门的基础之上,彻底掌握好CV的重要方向,同时提升模型设计与优化的工程 ...

  8. iOS 地图绘制折线 虚线 方向箭头 高德 Google

    方向箭头样式只实现了高德 google 没有实现 官方文档没有找到实现方式 有找到的请务必告诉我下 谢谢 Google地图: 我是创建了一个单例来实现google相关的东西 这个是画线的方法 这里只是 ...

  9. ACM竞赛学习记录------迷宫寻宝(BFS广度优先搜索)

    题目 洪尼玛今天准备去寻宝,在一个n*n (n行, n列)的迷宫中,存在着一个入口.一些墙壁以及一个宝藏.由于迷宫是四连通的,即在迷宫中的一个位置,只能走到与它直接相邻的其他四个位置(上.下.左.右) ...

最新文章

  1. 对称加密算法_技术分享丨这是一篇简单的小科普——什么是对称加密算法?(下)...
  2. WEB项目 后台接收前端数组
  3. 【数学建模】图论模型-dijkstra算法(最优化)
  4. alpine linux安装ftp,如何在Alpine Linux上安装GLPK?
  5. SPI接口通信协议详解:SPI时序、2线、3线、4线SPI及4种常用工作模式
  6. Web3d明日之星基于Javascript和OpenGL的技术
  7. mac下安装前端模板引擎Jinja2
  8. IMP-00041: 警告: 创建的对象带有编译警告解决办法
  9. javascript设计模式-适配器模式
  10. Atitit 信息检索 之音乐检索实践 艾提拉注 目录 1. 常规检索 歌手 歌名 1 1.1. 年代检索 1 1.2. 歌词检索(可以依靠web 1 1.3. 哼唱检索 原曲检索(可以使用酷
  11. 自由空间模型损耗计算详细说明
  12. 如何恢复计算机永久删除文件,回收站删除文件如何恢复
  13. 深度学习-TextDetection
  14. 2022年茶艺师(中级)考试题模拟考试题库模拟考试平台操作
  15. 大数据 (三) BI报表系统 superset 2 制作表格
  16. LookupError: Resource omw-1.4 not found. nltk3.7查找近反义词解决方法
  17. python输入n个数、输出最小的数字_程序查找最少的斐波纳契数以在Python中加到n?...
  18. 专注于企业元器件参数管理的物料库管理系统
  19. 20v转5v_12v转5v_5v转3.3v 5A用AH8316
  20. 简单日志(公开日记)

热门文章

  1. 【python】-- Socket接收大数据
  2. spine 2.1.27 Pro 叠加方式(Blending)
  3. 题目1198:a+b
  4. 引用dll文件要复制到本地
  5. 中文 WordPress 工具箱(1.2)与WP-Stats(2.2)冲突的解决办法
  6. sklearn 决策树例子_使用 sklearn 构建决策树并使用 Graphviz 绘制树结构
  7. go并发编程-理解不同并发场景下的go原语
  8. scala基础之隐式转换
  9. (8)FPGA实现1s闪灯代码(学无止境)
  10. (83)FPGA时钟抖动和时钟偏斜-面试必问(七)(第17天)