【题目描述】

爱与愁大神坐在公交车上无聊,于是玩起了手机。一款奇怪的游戏进入了爱与愁大神的眼帘:***(游戏名被打上了马赛克)。这个游戏类似象棋,但是只有黑白马各一匹,在点(x1,y1)(x1,y1)和(x2,y2)(x2,y2)上。它们得从点(x1,y1)(x1,y1)和(x2,y2)(x2,y2)走到(1,1)(1,1)。这个游戏与普通象棋不同的地方是:马可以走“日”,也可以像象走“田”。现在爱与愁大神想知道两匹马到(1,1)(1,1)的最少步数,你能帮他解决这个问题么?

【输入格式】

第1行:两个整数x1, y1x1,y1

第2行:两个整数x2, y2x2,y2

【输出格式】

第1行:黑马到1,11,1的步数

第2行:白马到1,11,1的步数

【说明/提示】

对于100\%100%数据:x1,y1,x2,y2 \le 20x1,y1,x2,y2≤20

分析

看到这道题一下子想到bfs,没错,就是bfs

不过要同时解决两匹马

思路一:进行两次bfs

也不是不行,不过写起来有点麻烦(比如要重置数组)

思路二:从(1,1)反向bfs

一个预处理的思路,只需要搜一遍

下面附上思路二的代码

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;int dis[50][50];
int x1[15] = {0,1,1,-1,-1,2,2,-2,-2,2,2,-2,-2};
int y1[15] = {0,2,-2,2,-2,1,-1,1,-1,2,-2,-2,2};
struct Point
{int x,y,step;
};
void bfs()
{memset(dis,-1,sizeof(dis));queue<Point> q;q.push(Point{1,1,0});dis[1][1] = 0;while(!q.empty()){int x = q.front().x,y = q.front().y,step = q.front().step;q.pop();for(int i = 1;i <= 12;i++){int nx = x + x1[i];int ny = y + y1[i];if(nx < 1 || nx > 50 || ny < 1 || ny > 50)continue;if(dis[nx][ny] != -1)continue;dis[nx][ny] = step + 1;q.push((Point){nx,ny,step + 1});}}
}
int main()
{bfs();int x,y;cin >> x >> y;cout << dis[x][y] << endl;cin >> x >> y;cout << dis[x][y] << endl;return 0;
}

好奇怪的游戏(BFS)相关推荐

  1. 洛谷P1747-好奇怪的游戏(BFS)

    题目背景: <爱与愁的故事第三弹·shopping>娱乐章. 调调口味来道水题. 题目描述: 爱与愁大神坐在公交车上无聊,于是玩起了手机.一款奇怪的游戏进入了爱与愁大神的眼帘:***(游戏 ...

  2. bfs总结 bfs题单 最短路 python (奇怪的电梯 好奇怪的游戏 迷宫 马的遍历 [USACO08FEB]Meteor Shower S)

    1 可以用来遍历所有的点 2 可以用来找最短路 3 多源最短路,开始时一次向队列放之多个点#板子 """ def bfs():1 起始点入队标记入队的点while not ...

  3. bzoj 2756 [SCOI2012]奇怪的游戏 二分+网络流

    2756:[SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MB Submit: 4926  Solved: 1362 [Submit][St ...

  4. BZOJ-2756 奇怪的游戏 黑白染色+最大流+当前弧优化+二分判断+分类讨论

    这个题的数据,太卡了,TLE了两晚上,各种调试优化,各种蛋疼. 2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec Memory Limit: 128 MB Submit ...

  5. bzoj 2756奇怪的游戏

    2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MB Submit: 2571  Solved: 685 [Submit][St ...

  6. 广度优先搜索——好奇怪的游戏(洛谷 P1747)

    题目选自洛谷P1747 简单的广搜模板题,4+8 = 12个方向进行bfs,目的地是(1,1) 每次查看队首是否到达,若到达(1,1) 则返回队首步长即可~ 需要注意的是,马走日和像走田的位置计算 i ...

  7. Dinic最大流(bzoj 2756: [SCOI2012]奇怪的游戏)

    Dinic算法: 转一张很好懂的图,复杂度O(V²E) 注意一开始的那个层次图并不是原图,是第一次bfs时所保留的边 (像原图中1和2之间也有一条边,不过第一次bfs时这条边并不会被经过) 2756: ...

  8. bzoj2756: [SCOI2012]奇怪的游戏

    Description Blinker最近喜欢上一个奇怪的游戏.  这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1.  现在 ...

  9. P1747 好奇怪的游戏

    题目背景 <爱与愁的故事第三弹·shopping>娱乐章. 调调口味来道水题. 题目描述 爱与愁大神坐在公交车上无聊,于是玩起了手机.一款奇怪的游戏进入了爱与愁大神的眼帘:***(游戏名被 ...

最新文章

  1. Swift中页面跳转与传值:
  2. 解决slf4j 冲突
  3. 第七讲 SCCM2012部署Endpoint Protect
  4. xwpython aui 子窗口-wxpython中的wxaui窗口管理器
  5. setseed_Java Random setSeed()方法与示例
  6. Pentium II Pentium III架构/微架构/流水线 (5) - MMX
  7. 【Java】Java 集合 可视化 在线演示 环境
  8. AcWing1091.理想的正方形(单调队列DP)
  9. 钩子教程 - 原理(一)
  10. python第七章_Python第七章
  11. selenium+webdriver+java(基本小例子及初始化三种浏览器)---------------
  12. 开启WIN 7下的administrator用户的方法(VISTA一样)
  13. keepalived IP漂移技术
  14. 20 步打造完美网站布局设计
  15. Laragon 自定义域名
  16. 通用计算机含义,当今的计算机其通用的名称应该是通用数字计算机,请简单描述包含的三层含义? (8.0分)...
  17. PHP将图片和文字合成到一张背景图上
  18. 购买云服务器如何选择cpu与内存搭配
  19. 《Excel 数据之美--科学图表与商业图表的绘制》
  20. SpringBoot--访问静态页面

热门文章

  1. java stream实现分组BigDecimal求和,自定义分组求和
  2. 基于matlab的信号仿真实验,基于MATLAB的《信号与系统》课程仿真实验系统设计
  3. 华为面试题----16进制转换为10进制
  4. python 通过访问有道词典来实现翻译
  5. 新CRMEB知识付费程序源码+代码全开源
  6. Java 实现单例模式的七种写法
  7. OpenCV手部图像预处理
  8. Spring_刘锋的博客
  9. authenticator_如何将Microsoft Authenticator移至新手机
  10. cordova 修改app图标