原题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!

UVA439 Knight Moves的更多相关文章

  1. uva439 - Knight Moves(BFS求最短路)

    题意:8*8国际象棋棋盘,求马从起点到终点的最少步数. 编写时犯的错误:1.结构体内没构造.2.bfs函数里返回条件误写成起点.3.主函数里取行标时未注意书中的图. #include<iostr ...

  2. UVA 439 Knight Moves

      // 题意:输入标准国际象棋棋盘上的两个格子,求马最少需要多少步从起点跳到终点 BFS求最短路: bfs并维护距离状态cnt, vis记录是否访问过 #include<cstdio> ...

  3. 【习题 6-4 UVA-439】Knight Moves

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] bfs模板题 [代码] /* 1.Shoud it use long long ? 2.Have you ever test sev ...

  4. UVA439 骑士的移动 Knight Moves

    #include<bits/stdc++.h> using namespace std; char a,c; int b,d; ][]; ]={,,,-,,-,-,-}; ]={,-,,, ...

  5. UVA-439, Knight Moves(深度优先搜索)

    #include<iostream> #include<queue> #include<cstring> #include<string> #inclu ...

  6. 题解 UVA439 骑士的移动 Knight Moves

    前言 最近板子题刷多了-- 题意 一个 \(8\times 8\) 的棋盘,问马从起点到终点的最短步数为多少. \(\sf Solution\) 要求最短路径嘛,显然 bfs 更优. 读入 这个读入处 ...

  7. Knight Moves

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

  8. HDU 1372 Knight Moves

    最近在学习广搜  这道题同样是一道简单广搜题=0= 题意:(百度复制粘贴0.0) 题意:给出骑士的骑士位置和目标位置,计算骑士要走多少步 思路:首先要做这道题必须要理解国际象棋中骑士的走法,国际象棋中 ...

  9. [宽度优先搜索] HDU 1372 Knight Moves

    Knight Moves Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  10. HDU 1372 Knight Moves (bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1372 Knight Moves Time Limit: 2000/1000 MS (Java/Othe ...

随机推荐

  1. 关于vmware虚拟机的ova/ovf转换成aws上的AMI镜像

    很多时候,我们会有这样的需求,需要将DC中vmware虚拟化的服务器,迁移到aws上,我们就得先将vmware虚拟机导出,然后转换 关于vmvare虚拟的导出备份,一般有ova(Open Virtua ...

  2. MyBatis之ResultMap的association和collection标签详解

    一.前言 MyBatis 创建时的一个思想是:数据库不可能永远是你所想或所需的那个样子. 我们希望每个数据库都具备良好的第三范式或 BCNF 范式,可惜它们并不都是那样. 如果能有一种数据库映射模式, ...

  3. 2022.2.26A组总结&反思

    今天的发挥比较奇妙.. T1:一眼dp+高斯消元,但是感觉细节比较多,然后先去做了T2,写完后回来推了一下就做出来了.比较裸,但是细节确实多,但是很可惜的一点是最后提交的代码没有判不合法,到手的100 ...

  4. 监控CPU状况并发送邮件shell脚本

    #!/bin/bash #监控CPU状况并发送邮件 DATE=$(date +%y%m%d) TEMP=$(mktemp tmp.XXX.txt) cat /proc/cpuinfo >$TEM ...

  5. 齐博X1-栏目的调用3

    本节继续说明栏目的调用之同级别栏目 同级栏目的调用  fun('sort@brother',$fid,'cms') 这个函数用的比较多,特别是栏目页,在一个页面会把一个父级栏目下的子级栏目全部列出来, ...

  6. 42.JSON Web Token认证

    JSON Web Token认证介绍 简称JWT认证,一般用于用户认证 JWT是一种相当新的标准,可用于基于token的身份验证 与内置的TokenAuthentication方案不同,JWT不需要使 ...

  7. Droplet——一款轻量的Golang应用层框架

    Github地址 如标题所描述的,Droplet 是一个 轻量 的 中间层框架,何为中间层呢? 通常来说,我们的程序(注意这里我们仅仅讨论程序的范围,而非作为一个系统,因此这里不设计如 LB.Gate ...

  8. 重新整理 .net core 实践篇 ———— linux上排查问题 [外篇]

    前言 简单介绍一下在排查问题.献给初学者. 该文的前置篇: https://www.cnblogs.com/aoximin/p/16838657.html 正文 什么是linux系统 linux 是基 ...

  9. IPython的使用技巧

    ?打印IPython简介 在IPython中直接输入?,可以打印出IPython的功能介绍 object ?内省功能 在变量后面加上?,可以打印出该变量的详细信息.例如图中一个列表对象,打印出该对象的 ...

  10. Kubeadm部署k8s单点master

    Kubeadm部署k8s单点master 1.环境准备: 主机名 IP 说明 宿主机系统 master 10.0.0.17 Kubernetes集群的master节点 CentOS 7.9 node1 ...