UVA439 Knight Moves
2024-10-21 04:05:40
题目大意
有一个骑士,他可以骑马日字型跳跃,问他从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!
最新文章
- ios framework 分离与合并多种CPU架构,分离与合并模拟器与真机
- js中的replace全局替换
- 6.Mybatis中的动态Sql和Sql片段(Mybatis的一个核心)
- javascript 判断身份证的正确性
- 502 bad gateway 错误
- Android(java)学习笔记126:Android Studio中build.gradle简介
- Android开源工具库
- mybatis14 动态sql
- 使用Eclipse把java文件打包成jar 含有第三方jar库的jar包
- 使用Vagrant machine
- loadrunner11.0之IP欺骗
- 移动端,input输入框被手机输入法解决方案
- lucene内存索引库、分词器
- C#三目运算符
- python基础之Day21
- ORACLE提交事务回滚
- C#串口SerialPort常用属性方法
- (转)Windows上搭建Kafka运行环境
- java输入一个字符串,输出该字符串的所有的排序
- APP性能测试开始之旅
热门文章
- Java(15)Object类
- 洛谷P6033 [NOIP2004 提高组] 合并果子 加强版 (单调队列)
- 路径分析—PostgreSQL+GeoServer+Openlayers(二)
- docker gitlab迁移 备份 部署 搭建以及各种问题
- 插入排序算法(Java代码实现)
- ysoserial commonscollections3 分析
- Git 02: git管理码云代码仓库 + IDEA集成使用git
- Python学习之实例2
- <;五>;关于类的各类成员
- 嵌入式-C语言基础:字符串拼接函数strcat