Horse Pro

bfs搜索,但图中存在负值坐标,两种方法解决。

  • 用数组标记,将原点设为300,300
  • 用map标记

http://oj.jxust.edu.cn/contest/Problem?id=1689&pid=5

#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
typedef long long ll;
const int maxn = 100000 + 5; int bx,by,e2,ey;
int vis[605][605];
int dir[8][2]={2,1,2,-1,-2,1,-2,-1,1,2,-1,2,1,-2,-1,-2};
struct Node
{
int x;
int y;
int len;
}; int bfs()
{
Node next;
next.x=bx;next.y=by;next.len=0;
queue<Node> q;
q.push(next);
while(!q.empty())
{
Node front;
front =q.front();
if(front.len>100) return -1;
q.pop();
for(int i=0;i<8;i++)
{
next.x=front.x+dir[i][0],next.y=front.y+dir[i][1],next.len=front.len+1;
if(vis[next.x][next.y]) continue;
if(next.x==e2&&next.y==ey) return next.len;
q.push(next);
vis[next.x][next.y]=1;
}
}
return -1;
} int main() {
scanf("%d%d%d%d",&bx,&by,&e2,&ey);
e2=e2-bx+300;ey=ey-by+300;
bx=300;by=300;
int res=bfs();
printf("%d\n",res);
return 0;
}
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <map>
using namespace std; #define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
const int maxn = 100100;
const int inf = 0x3f3f3f3f;
const int M = 1e9+7;
int to[8][2] = {2,1,2,-1,-2,1,-2,-1,1,2,-1,2,1,-2,-1,-2};
int a,b,c,d;
struct node
{
int x,y,z;
}; map<pair<int,int>, int> m; int bfs()
{
node now,nex;
now.x = a,now.y= b,now.z = 0;
std::queue<node> q;
q.push(now);
while(!q.empty())
{
now = q.front();
q.pop();
if(now.x == c && now.y==d) return now.z;
if(now.z > 100) break;
for(int i = 0; i < 8; i++)
{
nex.x = now.x+to[i][0];
nex.y = now.y+to[i][1];
if(m[make_pair(nex.x,nex.y)]) continue;
m[make_pair(nex.x,nex.y)]=1;
nex.z = now.z+1;
q.push(nex);
}
}
return -1;
} int main()
{
scanf("%d%d%d%d", &a,&b,&c,&d);
c=c-a;d=d-b;
a=0,b=0;
printf("%d\n", bfs());
return 0;
}

Horse Pro(带负坐标的bfs搜索)的更多相关文章

  1. PCL Save VTK File With Texture Coordinates 使用PCL库来保存带纹理坐标的VTK文件

    我之前有一篇博客Convert PLY to VTK Using PCL 1.6.0 or PCL 1.8.0 使用PCL库将PLY格式转为VTK格式展示了如何将PLY格式文件转化为VTK格式的文件, ...

  2. 如何将JPG格式的图片转化为带地理坐标的TIFF格式

    最近有个项目需要用到开源软件GeoServer,数据源是一张高分辨率的2.5维图片,格式是jpg的,由于GeoServer不支持jpg格式的发布,因此考虑到要进行格式转换,将其转换成tiff格式. 1 ...

  3. 【算法系列学习三】[kuangbin带你飞]专题二 搜索进阶 之 A-Eight 反向bfs打表和康拓展开

    [kuangbin带你飞]专题二 搜索进阶 之 A-Eight 这是一道经典的八数码问题.首先,简单介绍一下八数码问题: 八数码问题也称为九宫问题.在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的 ...

  4. F: Horse Pro 马走棋盘 BFS

    F: Horse Pro 豆豆也已经开始学着玩象棋了,现在豆豆已经搞清楚马的走法了,但是豆豆不能确定能否在 100 步以内从一个点到达另一个点(假设棋盘无限大). Input 第一行输入两个整数 x1 ...

  5. 使用GDAL将下载的Google卫星图像转为带坐标的tif

    网上有很多下载Google地图的卫片的软件,一般下载下来的图像都是jpg格式的,另外附带一个坐标信息的描述文件.这样的数据不能直接拿来在遥感或者GIS软件中使用,因为图像里面没有投影和坐标信息,所以就 ...

  6. 在屏幕上搜索图片并返回图片所在位置的坐标的AutoHotkey脚本源代码(类似大漠插件)

    ;~  在屏幕上搜索图片并返回图片所在位置的坐标的AutoHotkey脚本源代码(类似大漠插件) ; https://www.autohotkey.com/boards/viewtopic.php?t ...

  7. 图之单源Dijkstra算法、带负权值最短路径算法

    1.图类基本组成 存储在邻接表中的基本项 /** * Represents an edge in the graph * */ class Edge implements Comparable< ...

  8. hdu 1240:Asteroids!(三维BFS搜索)

    Asteroids! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  9. hiho_1139_二分+bfs搜索

    题目 给定N个点和M条边,从点1出发,到达点T.寻找路径上边的个数小于等于K的路径,求出所有满足条件的路径中最长边长度的最小值. 题目链接:二分     最小化最大值,考虑采用二分搜索.对所有的边长进 ...

随机推荐

  1. 小技巧:如何快速开启一个静态 HTTP 服务?

    静态 HTTP 服务的几个用途: 静态网页的 HTTP 服务,以访问浏览 如:生成的文档.博客等 公开文件的 HTTP 服务,以访问下载 如:分享的文档.安装包等 以下会介绍目前我了解的方式中,最推荐 ...

  2. JS判断 函数是否定义/变量是否定义

    函数是否定义: <script type="text/javascript"> try { if(typeof FunName === "function&q ...

  3. Nginx 从入门到放弃(二)

    学习完了nginx的基本知识后,我们来了解下nginx的虚拟主机. 说到虚拟主机,那就得说一说虚拟主机的三种方式了 基于端口的虚拟主机 基于域名的虚拟主机 基于ip的虚拟主机 基于端口实现虚拟主机 只 ...

  4. 修改CentOS7登录欢迎界面信息

    vi /etc/issue 添加自己喜欢的内容,保存即可. 特殊字符的含义: \d 本地端时间的日期: \l 显示第几个终端机接口: \m 显示硬件的等级 (i386/i486/i586/i686.. ...

  5. python-多任务-进程

    什么是进程? 程序是静态的,当程序运行起来就叫做进程. 进程是操作系统分配资源的基本单元. 进程.线程的区别与优缺点 1. 定义的不同: 进程是系统进行资源分配的最小单位. 线程是进程的一个实体,是C ...

  6. 【Oracle】arraysize的研究(存在疑问)

    arraysize的研究(存在疑问) SYS@proc> create table aaa (id1 int,id2 int,id3 int,id4 int); Table created. S ...

  7. 关于npm和yarn 安装vue脚手架

    第一篇博客有点小紧张.轻喷~ 第一步:安装node.js       地址 --------https://nodejs.org/en/ 详细步骤这里就不写了    可以去看     地址 ----- ...

  8. PE文件格式详解(七)

    PE文件格式详解(七)   Ox00 前言 前面好几篇在讲输入表,今天要讲的是输出表和地址的是地址重定位.有了前面的基础,其实对于怎么找输出表地址重定位的表已经非常熟悉了.   0x01 输出表结构 ...

  9. 图形处理:给 Canvas 文本填充线性渐变

    作者:凹凸曼 - Barrior 在 Canvas 中对文本填充水平或垂直的线性渐变可以轻易实现,而带角度的渐变就复杂很多:就好像下面这样,假设文本矩形宽为 W, 高为 H, 左上角坐标为 X, Y. ...

  10. .net Framework4 类库调用Jwt

    通过jwt源码,将其引用的Newtonsoft.Json.dll的9.0版本改为最新的12.0版本后重新生成以下文件. 下载地址: https://files.cnblogs.com/files/Zh ...