【题解】Knight Moves-C++
题目
Description
在一个8*8的棋盘上,一只中国象棋中的马要从一个点跳到另一个点。问最少需要多少步。
Input
整个测试组由多组数据组成,请做到文件底结束。
对于每组数据,前两个坐标代表出发点,后两个代表结束点。注意坐标第一位为a至h中某个字母,第二位为1到8某个数字。
Output
对于每个测试请输出"To get from xx to yy takes n knight moves.".
Sample Input
e2 e4
a1 b2
b2 c3
a1 h8
a1 h7
h8 a1
b1 c3
f6 f6
Sample Output
To get from e2 to e4 takes 2 knight moves.
To get from a1 to b2 takes 4 knight moves.
To get from b2 to c3 takes 2 knight moves.
To get from a1 to h8 takes 6 knight moves.
To get from a1 to h7 takes 5 knight moves.
To get from h8 to a1 takes 6 knight moves.
To get from b1 to c3 takes 1 knight moves.
To get from f6 to f6 takes 0 knight moves.
思路
广搜,每次输入字符串先存起来,转成两对坐标,按照正常的搜索去做就行了,然后唯一不同的是dir数组要按照马的走法来打,具体看下面代码是怎么写的,其他的坑点不多,就是要注意输出格式中空格的位置以及个数(真心劝告!!!)
代码
#include<bits/stdc++.h>
using namespace std;
string o1,o2;
int sx,sy,ex,ey,cnt;
int dir[][]={{,},{,-},{-,},{-,-},{,},{-,},{,-},{-,-}};
struct node
{
int x,y,t;
node(){};
node(int xx,int yy,int tt)
{
x=xx,y=yy,t=tt;
}
};
bool vis[][];
bool in(int x,int y)
{
return <=x&&x<=&&<=y&&y<=;
}
void bfs()
{
queue<node> q;
q.push(node(sx,sy,));
vis[sx][sy]=;
while(!q.empty())
{
node now=q.front();
q.pop();
if(now.x==ex&&now.y==ey)
{
cout<<"To get from "<<o1<<" to "<<o2<<" takes "<<now.t<<" knight moves."<<endl;
return;
}
for(int i=;i<;i++)
{
int tx=now.x+dir[i][],ty=now.y+dir[i][];
if(in(tx,ty)&&!vis[tx][ty])
{
q.push(node(tx,ty,now.t+));
vis[tx][ty]=;
}
}
}
cout<<"f**k"<<endl;
return;
}
int main()
{
while(cin>>o1>>o2)
{
memset(vis,,sizeof(vis));
sx=o1[]-'a'+,sy=o1[]-'';
ex=o2[]-'a'+,ey=o2[]-'';
bfs();
}
return ;
}
【题解】Knight Moves-C++的更多相关文章
- Hdoj 1374.Knight Moves 题解
Problem Description A friend of you is doing research on the Traveling Knight Problem (TKP) where yo ...
- HDU 1372 Knight Moves 题解
Knight Moves Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- 题解 UVA439 骑士的移动 Knight Moves
前言 最近板子题刷多了-- 题意 一个 \(8\times 8\) 的棋盘,问马从起点到终点的最短步数为多少. \(\sf Solution\) 要求最短路径嘛,显然 bfs 更优. 读入 这个读入处 ...
- HDU1372:Knight Moves(经典BFS题)
HDU1372:Knight Moves(BFS) Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %l ...
- HDU 1372 Knight Moves(BFS)
题目链接 Problem Description A friend of you is doing research on the Traveling Knight Problem (TKP) whe ...
- POJ2243 Knight Moves —— A*算法
题目链接:http://poj.org/problem?id=2243 Knight Moves Time Limit: 1000MS Memory Limit: 65536K Total Sub ...
- 【习题 6-4 UVA-439】Knight Moves
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] bfs模板题 [代码] /* 1.Shoud it use long long ? 2.Have you ever test sev ...
- 1450:【例 3】Knight Moves
1450:[例 3]Knight Moves 题解 这道题可以用双向宽度搜索优化(总介绍在 BFS ) 给定了起始状态和结束状态,求最少步数,显然是用BFS,为了节省时间,选择双向BFS. 双向B ...
- Knight Moves
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- HDU 1372 Knight Moves
最近在学习广搜 这道题同样是一道简单广搜题=0= 题意:(百度复制粘贴0.0) 题意:给出骑士的骑士位置和目标位置,计算骑士要走多少步 思路:首先要做这道题必须要理解国际象棋中骑士的走法,国际象棋中 ...
随机推荐
- (一)HTTP协议的一些知识点(来自那些年的笔记)
目录 http协议1.0.1.1两个版本的区别 访问几次服务器? Http请求行和请求方式详解 可以在超链接上传一些数据 HTTP请求头各个头字段的详解 HTTP响应和响应行状态详解 断点下载 HTT ...
- 正则与re模块
一.正则表达式 在线测试工具 http://tool.chinaz.com/regex/ 1.字符组 在同一个位置可能出现的各种字符组成一个字符组,在正则表达中用[ ]表示 一个正则就是一条匹 ...
- asp.net core-13.Cookie-based认证实现
1.打开visual studio code创建一个MVC项目
- (四)Hibernate的增删改查操作(1)
Hiberntae的查找操作有多种: 1. 使用Criteria接口查询 Query_Criteria.java package action; import java.util.ArrayList ...
- (七)springmvc之ModelAttribute注解
一.没有使用@ModelAttribute的Controller方法. @RequestMapping("/save") public String save(User user) ...
- Java ShellSort
Java ShellSort /** * <html> * <body> * <P> Copyright 1994-2018 JasonInternational ...
- 生成 excel 插件 Epplus
最近做 .net core 项目 发现一个新的 生成excel 的插件 . 以前值用 aspose 或者 npio. 简介:Epplus是一个使用Open Office XML(Xlsx)文件格式,能 ...
- 一篇文章彻底搞懂异步,同步,setTimeout,Promise,async
之前翻看别的大佬的博客看到了关于setTimeout,promise还有async执行顺序的文章.观看了几篇之后还是没有怎么看懂,于是自己开始分析代码,并整理了此文章,我相信通过此文章朋友们能对异步同 ...
- SQL查询月、天、周、年(MySql的实例对比)
SQL Server实现 日期部分 缩写 year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww w ...
- 6.NIO2-Path、Paths、Files
NIO.2 jdk1.7中,java对 NIO 极大的扩展,主要增强的是对文件处理 和 文件系统特性的支持 关于其中一些API的使用 public class TestNIO_2_Path_File ...