原题Vjudge

题目大意

有一个骑士,他可以骑马日字型跳跃,问他从A点到B点最少要几步

解题思路

这题就是一个特别裸的广搜板子

它的主要问题在于输入输出

输入的数据我们可以用\(pair\)读入,第一关键字存行(a~e),第二关键字存列(1 ~ 8)

然后我们为了方便处理,把行也映射成数组1 ~ 8

所以有了我们的读入代码

预编译指令

#define x first
#define y second

定义的\(A, B\)

pair<char, int> A, B;
while (cin >> A.x >> A.y >> B.x >> B.y)
{
int sx = A.x - 'a' + 1, sy = A.y,
fx = B.x - 'a' + 1, fy = B.y;
//printf这句是输出

然后就是巨坑无比的输出了

一定要有句号!!!!!!!!!

代码

#include <iostream>
#include <cstring>
#include <queue> #define x first
#define y second using namespace std; struct Point
{
int x, y, dist;
Point(int a = 0, int b = 0, int c = 0) : x(a), y(b), dist(c) {}
} ; pair<char, int> A, B;
int mp[9][9]; int bfs(int& sx, int& sy, int& fx, int& fy)
{
if (sx == fx && sy == fy) return 0;
queue<Point> q;
int dx[8] = {-2, -1, 1, 2, 2, 1, -1, -2};
int dy[8] = {1, 2, 2, 1, -1, -2, -2, -1}; q.push(Point(sx, sy, 0)); while (q.size())
{
Point t = q.front(); q.pop(); for (int i = 0; i < 8; i ++ )
{
int x = t.x + dx[i], y = t.y + dy[i];
if (x < 1 || x > 8 || y < 1 || y > 8) continue ;
if (mp[x][y]) continue ;
Point now = Point(x, y, t.dist + 1);
if (now.x == fx && now.y == fy) return now.dist;
q.push(now);
}
}
} int main()
{
while (cin >> A.x >> A.y >> B.x >> B.y)
{
int sx = A.x - 'a' + 1, sy = A.y,
fx = B.x - 'a' + 1, fy = B.y;
printf("To get from %c%d to %c%d takes %d knight moves.\n",
A.x, A.y, B.x, B.y, bfs(sx, sy, fx, fy));
}
return 0;
}

Accepted!

最新文章

  1. ios framework 分离与合并多种CPU架构,分离与合并模拟器与真机
  2. js中的replace全局替换
  3. 6.Mybatis中的动态Sql和Sql片段(Mybatis的一个核心)
  4. javascript 判断身份证的正确性
  5. 502 bad gateway 错误
  6. Android(java)学习笔记126:Android Studio中build.gradle简介
  7. Android开源工具库
  8. mybatis14 动态sql
  9. 使用Eclipse把java文件打包成jar 含有第三方jar库的jar包
  10. 使用Vagrant machine
  11. loadrunner11.0之IP欺骗
  12. 移动端,input输入框被手机输入法解决方案
  13. lucene内存索引库、分词器
  14. C#三目运算符
  15. python基础之Day21
  16. ORACLE提交事务回滚
  17. C#串口SerialPort常用属性方法
  18. (转)Windows上搭建Kafka运行环境
  19. java输入一个字符串,输出该字符串的所有的排序
  20. APP性能测试开始之旅

热门文章

  1. Java(15)Object类
  2. 洛谷P6033 [NOIP2004 提高组] 合并果子 加强版 (单调队列)
  3. 路径分析—PostgreSQL+GeoServer+Openlayers(二)
  4. docker gitlab迁移 备份 部署 搭建以及各种问题
  5. 插入排序算法(Java代码实现)
  6. ysoserial commonscollections3 分析
  7. Git 02: git管理码云代码仓库 + IDEA集成使用git
  8. Python学习之实例2
  9. &lt;五&gt;关于类的各类成员
  10. 嵌入式-C语言基础:字符串拼接函数strcat