Horse Pro(带负坐标的bfs搜索)
时间:2019-11-18
本文章向大家介绍Horse Pro(带负坐标的bfs搜索),主要包括Horse Pro(带负坐标的bfs搜索)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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;
}
原文地址:https://www.cnblogs.com/chilkings/p/11881440.html
- Android调用手机中的应用市场,去评分的功能实现
- ANR 原理与实战技巧
- Android将应用程序的崩溃信息如何保存到本地文件,并上传至服务器
- android native内存检测方案(二)
- 测试数据集与验证数据集之间有什么区别呢?
- 深度学习的未来
- SDL系列讲解(二) 环境搭建
- SDL系列讲解(四) demo讲解
- 具有张量流的混合密度网络
- SDL系列讲解(七) SDL_image教程
- SDL系列讲解(八) SDL_ttf教程
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](六)
- android SDL系列讲解(十三) 播放音乐库 SDL_mixer教程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python素材下载爬虫,ui素材下载爬取采集源码
- Python与seo的应用,sitemap.xml文件制作工具源码
- 关键词爬虫,Python花瓣画板关键词采集存储数据库
- 电商商品爬虫,亚马逊amazon采集源码
- Python tk例子,古董音乐播放器exe
- 爬虫例子,Python多线程爬虫例子案例
- 【爬虫】花瓣图片爬虫,Python图片采集下载源码
- Python大作网图片采集下载,多线程图片爬虫
- Python素材下载爬虫,多线程rar下载爬虫
- 一个简单的图片爬虫,Python图片采集下载
- 百度统计后台总是被广告骚扰?看看应用python是如何实现的
- Python电商爬虫,法国亚马逊商品采集
- Python堆糖网图片爬虫,多进程及多线程的使用例子
- Python Post提交简单案例,文本内容在线语音合成
- Python多线程爬虫,主播信息资料爬取采集