Shortest path of the king

CodeForces - 3A

棋盘上的国王被单独放置。尽管他是孤独的,但并未伤心,因为他有事关全局的重要性。例如,他必须正式访问方格 t 。由于国王不习惯于浪费自己的时间,因此他想用最小的移动步数,从自己的当前位置 s 抵达方格 t 。请帮助他达成这一目标。

每次移动,国王可以从当前的方格开始,抵达与之具有公共边或公共顶点的某个方格 (通常他可以走向 8 个不同的方格)。

输入

第一行包含了方格 s 所在的棋盘坐标,第二行 — 方格 t 。

棋盘坐标包含两个字符,第一个字符是小写的拉丁字母 (从 a 到 h),第二个字符是介于 1 到 8 之间的数字。

输出

在第一行中,打印 n — 国王移动的最少步数。然后,在 n 行中打印相应的移动步骤。每次移动的描述,使用以下 8 种方式中的一种:L, R, U, D, LU, LD, RU 或 RD 。

L, R, U, D 相应表示左移、右移、上移和下移 (依据图片),且两字母组合表示斜对角移动。如果答案不唯一,打印它们中的任何一种。

示例

输入
a8
h1
输出
7
RD
RD
RD
RD
RD
RD
RD sol:暴力if判断8个方向即可
Ps:代码非常丑丑丑丑丑
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
inline ll read()
{
ll s=;
bool f=;
char ch=' ';
while(!isdigit(ch))
{
f|=(ch=='-'); ch=getchar();
}
while(isdigit(ch))
{
s=(s<<)+(s<<)+(ch^); ch=getchar();
}
return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
if(x<)
{
putchar('-'); x=-x;
}
if(x<)
{
putchar(x+''); return;
}
write(x/);
putchar((x%)+'');
return;
}
#define W(x) write(x),putchar(' ')
#define Wl(x) write(x),putchar('\n')
int main()
{
int x1,y1,x2,y2;
char ch=' ';
while(!islower(ch)) ch=getchar();
x1=ch-'a'+;
R(y1);
ch=' ';
while(!islower(ch)) ch=getchar();
x2=ch-'a'+;
R(y2);
Wl(max(abs(x1-x2),abs(y1-y2)));
if(x1<=x2)
{
if(y1<=y2)
{
if(x2-x1>y2-y1)
{
while(y2-y1>) {puts("RU"); x1++; y1++;}
while(x2-x1>) {puts("R"); x1++;}
}
else
{
while(x2-x1>) {puts("RU"); x1++; y1++;}
while(y2-y1>) {puts("U"); y1++;}
}
}
else
{
if(x2-x1>y1-y2)
{
while(y1-y2>) {puts("RD"); x1++; y1--;}
while(x2-x1>) {puts("R"); x1++;}
}
else
{
while(x2-x1>) {puts("RD"); x1++; y1--;}
while(y1-y2>) {puts("D"); y1--;}
}
}
}
else
{
if(y1<=y2)
{
if(x1-x2>y2-y1)
{
while(y2-y1>) {puts("LU"); x1--; y1++;}
while(x1-x2>) {puts("L"); x1--;}
}
else
{
while(x1-x2>) {puts("LU"); x1--; y1++;}
while(y2-y1>) {puts("U"); y1++;}
}
}
else
{
if(x1-x2>y1-y2)
{
while(y1-y2>) {puts("LD"); x1--; y1--;}
while(x1-x2>) {puts("L"); x1--;}
}
else
{
while(x1-x2>) {puts("LD"); x1--; y1--;}
while(y1-y2>) {puts("D"); y1--;}
}
}
}
return ;
}
 

codeforces3A的更多相关文章

随机推荐

  1. python多版本共存问题(以2.7和3.5系列版本为例)

    1.0 下载Python2.7x和Python3.5x版本 2.0 安装Python 3.0 配置环境变量,分别添加至path路径 4.0 只修改Python27文件中的.exe文件(这样系统默认为P ...

  2. 使用自定义端口连接SQL Server的方法(转载)

    使用过SQL Server的人大多都知道,SQL Server服务器默认监听的端口号是1433,但是我今天遇到的问题是我的机器上有三个数据库实例,这样使用TCP/IP远程连接时就产生了问题.如何在Mi ...

  3. BZOJ2154/BZOJ2693/Luogu1829 Crash的数字表格/JZPFAR 莫比乌斯反演

    传送门--Luogu 传送门--BZOJ2154 BZOJ2693是权限题 其中JZPFAR是多组询问,Crash的数字表格是单组询问 先推式子(默认\(N \leq M\),所有分数下取整) \(\ ...

  4. RabbmitMQ-工作队列及相关概念

    工作队列-WorkQueue 实现功能: 将耗时的任务分发给多个工作者 设计思想: 避免直接去做一件资源密集型的任务,并且还得等它完成.因此将任务安排后再去做.将任务封装为一个消息,发到队列中.一个工 ...

  5. 洛谷 4823 [TJOI2013]拯救小矮人

    题目链接-> 噔楞 题解: 贪心 按个高+臂长排序. 个矮臂长的先走,个高臂短的后走 #include <cstdio> #include <cstring> #incl ...

  6. Flask_admin 笔记六 modelView的内置方法

    增加model后端Flask-Admin对与之配合的数据库模型做了一些假设. 如果要实现自己的数据库后端,并且Flask-Admin的模型视图仍可按预期工作,则应注意以下事项:1) 每一个model必 ...

  7. list 的 增 删

    增: 1. name = [] 2. name.append() 3. name.extend(name2) name2为可迭代的 name + name2 与之效果一样,合并为一个列表 4. nam ...

  8. 龟速机器学习总结----day1

    机器学习主要工作大致分为以下几步,数据预处理,包括数据切分,特征选取,数据缺失值处理,来了解数据.接下来分割数据,分别分出训练集和测试集.第三步,选择模型,使用训练数据训练模型参数,再对测试数据进行预 ...

  9. 20135337——Linux实践三:程序破解

    程序破解 查看 运行 反汇编,查看汇编码 对反汇编代码进行分析: 在main函数的汇编代码中可以看出程序在调用"scanf"函数请求输入之后,对 [esp+0x1c] 和 [esp ...

  10. TCP程序设计基础

    1.端口与套接字 IP地址--->端口--->套接字(Socket)--->应用程序 2.TCP服务器端和客户端通信 1)服务器创建一个ServerSocket,调用accept() ...