传送门:

http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1224

1224: ACM小组的古怪象棋

Lime Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 918     Solved: 382


Description

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

  1. 8 8 5 1 4 5

Sample Output

  1. 3
  2.  
  3. 分析:
    就是bfs的水题,需要注意的是先输入的是将的位置。。。。
    w了好几次,还有就是注意方向引导数组别写错了,马走的是日字
  4.  
  5. code
  1. #include<stdio.h>
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <cstring>
  5. #include <cstdio>
  6. #include <math.h>
  7. #include <cstdlib>
  8. #include <queue>
  9. using namespace std;
  10. #define max_v 25
  11. int dir[][]={{,},{,},{-,},{-,},{-,-},{-,-},{,-},{,-}};
  12. int n,m,sx,sy,fx,fy;
  13. int vis[max_v][max_v];
  14. struct node
  15. {
  16. int x,y,step;
  17. };
  18. int f(int x,int y)//越界 或 走过
  19. {
  20. if(x>=&&x<n&&y>=&&y<m&&vis[x][y]==)
  21. {
  22. return ;
  23. }
  24. return ;
  25. }
  26. int bfs()
  27. {
  28. queue<node> q;
  29. node p,next;
  30.  
  31. p.x=sx;
  32. p.y=sy;
  33. p.step=;
  34. q.push(p);
  35. vis[sx][sy]=;
  36.  
  37. while(!q.empty())
  38. {
  39. p=q.front();
  40. q.pop();
  41.  
  42. if(p.x==fx&&p.y==fy)
  43. {
  44. return p.step;
  45. }
  46.  
  47. for(int i=; i<; i++)
  48. {
  49. next.x=p.x+dir[i][];
  50. next.y=p.y+dir[i][];
  51.  
  52. if(f(next.x,next.y)==)
  53. {
  54. next.step=p.step+;
  55. vis[next.x][next.y]=;
  56. q.push(next);
  57. }
  58.  
  59. }
  60. }
  61. return -;
  62. }
  63. int main()
  64. {
  65. while(~scanf("%d %d %d %d %d %d",&n,&m,&fx,&fy,&sx,&sy))
  66. {
  67. memset(vis,,sizeof(vis));
  68. int ans=bfs();
  69. cout<<ans<<endl;
  70. }
  71. return ;
  72. }
  1.  

CSU - 1224 ACM小组的古怪象棋的更多相关文章

  1. CSUOJ 1224 ACM小组的古怪象棋

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

  2. B - ACM小组的古怪象棋 【地图型BFS+特殊方向】

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

  3. ACM小组的古怪象棋

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

  4. CSU-ACM2018暑假集训6—BFS

    可以吃饭啦!!! A:连通块 ZOJ 1709 Oil Deposits(dfs,连通块个数) B:素数变换 打表+bfs POJ 3216 Prime Path(打表+bfs) C:水bfs HDU ...

  5. BFS && DFS

    HDOJ 1312 Red and Black http://acm.hdu.edu.cn/showproblem.php?pid=1312 很裸的dfs,在dfs里面写上ans++,能到几个点就调了 ...

  6. bzoj 1899: [Zjoi2004]Lunch 午餐

    Description 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的口味(以及胃口)不同,所以 ...

  7. 【P2577】 午餐

    题目简述 THU ACM小组一行N个人去食堂吃饭,计划是这样的:先把所有的人分成两队,并安排好每队中各人的排列顺序,然后一号队伍到一号窗口去排队打饭,二号队伍到二号窗口去排队打饭.每个人打完饭后立刻开 ...

  8. P2577 [ZJOI2005]午餐 状压DP

    题目描述 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的口味(以及胃口)不同,所以他们要吃的菜各 ...

  9. P2577 [ZJOI2005]午餐

    题目描述 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的口味(以及胃口)不同,所以他们要吃的菜各 ...

随机推荐

  1. java swing画图片爱心

    第一次用swing做一个可视化程序,写第一篇随笔,有写的不好的地方请多多见谅.上个星期三在网上看到一个画爱心的软件,就想着自己用java也实现一个程序,画爱心用到的数学函数知识在网上百度的,不是本人原 ...

  2. class 命名规范

    本文是从简书复制的, markdown语法可能有些出入, 想看"正版"和更多内容请关注 简书: 小贤笔记 注: 文章摘自 penggelies07- 简书, super晴天 - C ...

  3. chrome调试工具DevTools的使用 以及 localhost在移动端不能访问的问题

    1.手机和pc 都需要装 chrome浏览器 2.手机端打开开发者模式和usb调试 (华为nova的手机小坑,需要选择usb 配置为可传输文件的状态) 3.经过以上操作打开chrome://inspe ...

  4. easyui汉化啊!

    <script type="text/javascript" src="__PUBLIC__/jquery-easyui-1.4.4/locale/easyui-l ...

  5. VS2013 C++ 动态链接库的生成

    原文:http://www.cnblogs.com/djiankuo/p/5092025.html 这个东西搞了好几天,现在终于没有问题了,其实现在想来还是微软做的东西好用啊,在这里点个赞!!! LL ...

  6. 创建第一个windows服务

    windows服务应用程序是一种长期运行在操作系统后台的程序,它对于服务器环境特别适合,它没有用户界面,不会产生任何可视输出,任何用户输出都回被写进windows事件日志. 计算机启动时,服务会自动开 ...

  7. nginx 两台机器 出现退款失败问题

    今天早上来公司后,测试人员告诉我 退款失败了.上周五还好好的,怎么这周三就出问题了,赶快让测试发来订单号,查询数据库,查询日志,发现还是以前的问题: search hit TOP, continuin ...

  8. Oracle基础之count(1)和count(*)的区别

    在数据库中Count(*)或者Count(1)或者Count([列])或许是最常用的聚合函数.很多人其实对这三者之间是区分不清的.本文会阐述这三者的作用,关系以及背后的原理. 我在网上看到一些所谓的优 ...

  9. Wpf 系列

    http://www.cnblogs.com/chillsrc/category/684419.html

  10. ES6 Map遍历、filter()筛选对象

    目录: -------- 1.map() -------- 2.filter(): ------------- 2.1.filter函数可以看成是一个过滤函数,返回符合条件的元素的数组 ------- ...