题目选自洛谷P1747

简单的广搜模板题,4+8 = 12个方向进行bfs,目的地是(1,1)

每次查看队首是否到达,若到达(1,1) 则返回队首步长即可~

需要注意的是,马走日和像走田的位置计算

int nt[12][2] = {{2,2},{2,-2},{-2,-2},{-2,2},{1,2},{2,1},{1,-2},{2,-1},{-1,-2},{-2,-1},{-1,2},{-2,1}};

“田”不是一个单位是上下左右哦,是两个!

题目背景

《爱与愁的故事第三弹·shopping》娱乐章。

调调口味来道水题。

题目描述

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

输入格式

第1行:两个整数x1,y1

第2行:两个整数x2,y2

输出格式

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

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

输入输出样例

输入 1

12 16
18 10

输出 1

8
9

说明/提示

100%数据:x1,y1,x2,y2<=20

解题代码:

#include<stdio.h>
#include<iostream>
#include<queue>
using namespace std;
struct ma{int x,y,st;
};
int Map[21][21],book[21][21];
int x,y;
int nt[12][2] = {{2,2},{2,-2},{-2,-2},{-2,2},{1,2},{2,1},{1,-2},{2,-1},{-1,-2},{-2,-1},{-1,2},{-2,1}};
int bfs(int sx,int sy){if(sx == 1 && sy == 1) return 0; //特判queue<ma> q;while(!q.empty()) q.pop(); //清空一下队列q.push({sx,sy,0});  book[sx][sy] = 1;while(!q.empty()){ma f = q.front(); //查看一下队首if(f.x == 1 && f.y == 1) return f.st; //到达目的地,返回步数q.pop();for(int i = 0;i<12;i++){int nx = f.x + nt[i][0], ny = f.y + nt[i][1];if(nx>0&&nx<=20 && ny>0&&ny<=20 && book[nx][ny] == 0){q.push({nx,ny,f.st+1}); book[nx][ny] = 1;}}}return 0;
}
int main(){for(int i=1;i<=2;i++){memset(book,0,sizeof(book));scanf("%d%d",&x,&y);printf("%d\n",bfs(x,y));}return 0;
}

广度优先搜索——好奇怪的游戏(洛谷 P1747)相关推荐

  1. 广度优先搜索(BFS)——马的遍历(洛谷 P1443)

    来看一道经典的搜索问题--马的遍历 大致题目,给定棋盘规模,以及马的初始位置,输出马到棋盘的最短距离,若不能到达则输出-1 很简单的一个搜索问题,用经典算法BFS就可以了,唯一需要注意判断的就是马有8 ...

  2. 广度优先搜索——奇怪的电梯(洛谷 P1135)

    广度优先搜索普及/提高篇,今天讲述的是洛谷里的一道题 奇怪的电梯(洛谷 P1135) 说一下我解题时候的思路吧. 首先读清楚题目,题目要求输出从 a楼 到 b楼的最少次数,楼层必须在[1,n]之间升降 ...

  3. 深度优先搜索——自然数的拆分问题(洛谷 P2404)

    题目选自洛谷P2404 题目显然是用DFS来做,需要注意的是 结果是从小到大的,所以同一种答案不同位置都只算一种,所以在dfs的时候 我们每次从上一次的值开始搜索即可. 用数组p[9]的1-8下标位置 ...

  4. 模拟——扫雷游戏(洛谷 P2670)

    模拟算法指的是让程序完整地按照题目叙述的方式运行得到答案! 此题选自洛谷P2670 也是一道简单模拟的题,没有必要列举出8个if语句逐一判断8个方向, 只需要用一个二维数组来保存8个方向即可. 需要注 ...

  5. 洛谷 P1747 好奇怪的游戏

    https://www.luogu.com.cn/problem/P1747?contestId=67264 AC代码 #include<iostream> #include<cst ...

  6. AC日记——欧几里得的游戏 洛谷 P1290

    题目描述 欧几里德的两个后代Stan和Ollie正在玩一种数字游戏,这个游戏是他们的祖先欧几里德发明的.给定两个正整数M和N,从Stan开始,从其中较大的一个数,减去较小的数的正整数倍,当然,得到的数 ...

  7. 2019年东莞特长生 游戏(洛谷 P2661 信息传递)

    Description 某校科技节到了,有? 个同学(编号为1到?)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为? 的同学的信息传递对象是编号为??的同学. 游戏开始 ...

  8. 巧用记忆化搜索代替暴力递归(洛谷P1464题题解,Java语言描述)

    题目要求 P1464题目链接 分析 如果--你信了这题干,真的写了递归--TLE警告!!! 所以,就需要优化嘛-- [−9223372036854775808,9223372036854775807] ...

  9. 洛谷P1135:奇怪的电梯(lift)

    题目 奇怪的电梯 - 洛谷 思路讲解 这道题主要用的是BFS(广度优先搜索),对电梯路径进行广搜,最后得出答案 广搜,全称广度优先搜索,相较dfs来讲,它更像是一个涟漪. 啥意思嘞?画一个图你就懂了 ...

最新文章

  1. LaTeX入门最终集 :LaTeX格式的调整LaTeX中怎么打出数学公式LaTeX的各种上下标
  2. xcode 中 的工程模板
  3. 机房空调清理杨柳絮操作
  4. C语言fputs()函数(把字符串写入到指定的流 stream (文件指针)中)
  5. sequence mysql jpa_Java-JPA-生成器-@SequenceGen
  6. java怎么上传文件到web服务器_Java客户端通过Http发送POST请求上传文件到web服务器...
  7. C++Pascal‘s Triangle杨辉三角的实现算法
  8. [译]GLUT教程 - 每秒帧数
  9. 零配置 之Spring基于Java类定义Bean配置元数据
  10. linux新建samba账户,ubuntu上创建账户和samba用户
  11. 一种被国人漠视的精神---狼的精神
  12. Top 10 盘点:2019 Java 开发者必学的测试框架、工具和库!
  13. String,PChar,PByte,Array of Char,Array of Byte 转换---来自大富翁
  14. 基于Java的Office 系列文档处理五种工具简单介绍
  15. android手机测试”
  16. proj4js 坐标转换
  17. 森林防火系统集成解决方案
  18. 计算机基金经理排名,2019年基金经理排行_2017年一季度 基金经理排行榜大揭秘 规模 盈利 经验...
  19. Hotspot 对象引用Reference和Finalizer 源码解析
  20. 新标准下企业申请测绘资质相关问题与解答

热门文章

  1. python线程的学习
  2. android builder布局方式,android – AlertDialog.Builder与自定义布局和EditText;无法访问视图...
  3. 升级ipython_Linux服务器python升级
  4. springboot 多线程_机密文档!阿里产出SpringBoot/Cloud,细节爆炸
  5. linux 文件管理器_8个Linux文件管理器尝试
  6. github 创始人_GitHub联合创始人Scott Chacon的视频采访,探讨代码之外的未来
  7. JavaScript css3模拟简单的视频弹幕功能
  8. 明知 | TypeScript 结合 egg.js 基本使用
  9. Bootstrap3 行内文本样式
  10. HTML pre元素