好奇怪的游戏(BFS)
【题目描述】
爱与愁大神坐在公交车上无聊,于是玩起了手机。一款奇怪的游戏进入了爱与愁大神的眼帘:***(游戏名被打上了马赛克)。这个游戏类似象棋,但是只有黑白马各一匹,在点(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)相关推荐
- 洛谷P1747-好奇怪的游戏(BFS)
题目背景: <爱与愁的故事第三弹·shopping>娱乐章. 调调口味来道水题. 题目描述: 爱与愁大神坐在公交车上无聊,于是玩起了手机.一款奇怪的游戏进入了爱与愁大神的眼帘:***(游戏 ...
- bfs总结 bfs题单 最短路 python (奇怪的电梯 好奇怪的游戏 迷宫 马的遍历 [USACO08FEB]Meteor Shower S)
1 可以用来遍历所有的点 2 可以用来找最短路 3 多源最短路,开始时一次向队列放之多个点#板子 """ def bfs():1 起始点入队标记入队的点while not ...
- bzoj 2756 [SCOI2012]奇怪的游戏 二分+网络流
2756:[SCOI2012]奇怪的游戏 Time Limit: 40 Sec Memory Limit: 128 MB Submit: 4926 Solved: 1362 [Submit][St ...
- BZOJ-2756 奇怪的游戏 黑白染色+最大流+当前弧优化+二分判断+分类讨论
这个题的数据,太卡了,TLE了两晚上,各种调试优化,各种蛋疼. 2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec Memory Limit: 128 MB Submit ...
- bzoj 2756奇怪的游戏
2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec Memory Limit: 128 MB Submit: 2571 Solved: 685 [Submit][St ...
- 广度优先搜索——好奇怪的游戏(洛谷 P1747)
题目选自洛谷P1747 简单的广搜模板题,4+8 = 12个方向进行bfs,目的地是(1,1) 每次查看队首是否到达,若到达(1,1) 则返回队首步长即可~ 需要注意的是,马走日和像走田的位置计算 i ...
- Dinic最大流(bzoj 2756: [SCOI2012]奇怪的游戏)
Dinic算法: 转一张很好懂的图,复杂度O(V²E) 注意一开始的那个层次图并不是原图,是第一次bfs时所保留的边 (像原图中1和2之间也有一条边,不过第一次bfs时这条边并不会被经过) 2756: ...
- bzoj2756: [SCOI2012]奇怪的游戏
Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1. 现在 ...
- P1747 好奇怪的游戏
题目背景 <爱与愁的故事第三弹·shopping>娱乐章. 调调口味来道水题. 题目描述 爱与愁大神坐在公交车上无聊,于是玩起了手机.一款奇怪的游戏进入了爱与愁大神的眼帘:***(游戏名被 ...
最新文章
- Swift中页面跳转与传值:
- 解决slf4j 冲突
- 第七讲 SCCM2012部署Endpoint Protect
- xwpython aui 子窗口-wxpython中的wxaui窗口管理器
- setseed_Java Random setSeed()方法与示例
- Pentium II Pentium III架构/微架构/流水线 (5) - MMX
- 【Java】Java 集合 可视化 在线演示 环境
- AcWing1091.理想的正方形(单调队列DP)
- 钩子教程 - 原理(一)
- python第七章_Python第七章
- selenium+webdriver+java(基本小例子及初始化三种浏览器)---------------
- 开启WIN 7下的administrator用户的方法(VISTA一样)
- keepalived IP漂移技术
- 20 步打造完美网站布局设计
- Laragon 自定义域名
- 通用计算机含义,当今的计算机其通用的名称应该是通用数字计算机,请简单描述包含的三层含义? (8.0分)...
- PHP将图片和文字合成到一张背景图上
- 购买云服务器如何选择cpu与内存搭配
- 《Excel 数据之美--科学图表与商业图表的绘制》
- SpringBoot--访问静态页面