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. LNMP安装201812012237

    发表这篇文章最初的意愿是想做个最新版的zabbix使用,后来看了下好多“软件”都升级了(如nginx.mysql等),就想干脆做个最新版本的LNMP环境得了,再单独做zabbix的最新版本省得以后升级 ...

  2. MySQL 基础一 安装

    1.下载安装包 2.安装MySQL 3.安装操作工具SQLyog 一 下载安装包 地址:百度软件中心MySQL安装包 下载安装操作工具安装包:SQLyog 安装教程地址:http://blog.csd ...

  3. Android学习之基础知识一

    一.Android的系统架构: 1.Linux内核层:提供Android硬件的各种驱动(显示驱动,音频驱动,蓝牙驱动,WiFi驱动等等) 2.系统运行库层:提供各种特性支持(数据库支持,绘图支持,浏览 ...

  4. Linux运维故障排查思路

    linux系统故障 网络问题 linux系统无响应 linux系统无法启动 linux系统故障处理思路 1.重视报错信息,一般情况下此提示基本定位了问题的所在 2.查阅日志文件,系统日志和应用日志 3 ...

  5. JaxbUtil转json转XML工具类

    json转换为XML工具类 package com.cxf.value; import org.springframework.util.StringUtils; import javax.xml.b ...

  6. CF908D New Year and Arbitrary Arrangement 期望、DP

    题目传送门 题意:给出正整数$pa,pb,k$,最开始你有一个空串,每一次你有$\frac{pa}{pa + pb}$的概率向串最后放一个$a$,有$\frac{pb}{pa + pb}$的概率向串最 ...

  7. [Oracle]如何取Control File 的Dump

    ]如何取Control File 的Dump: SQL> alter session set events 'immediate trace name controlf level 3';SQL ...

  8. 校内模拟赛 虫洞(by NiroBC)

    题意: n个点m条边的有向图,每一天每条边存在的概率都是p,在最优策略下,询问从1到n的期望天数. 分析: dijkstra. 每次一定会优先选dp最小的后继走,如果这条边不存在,选次小的,以此类推. ...

  9. spring-session-data-redis包冲突

    包冲突 spring 的包很容易冲突, 因为写软件的人在兼容性上处理的不够,一般不检测重复加载. spring-session-data-redis 引用后, 一定要把 spring-session ...

  10. MongoDB日常运维操作命令小结

    总所周知,MongoDB是一个NoSQL非数据库系统,即一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表:而每个集合中可以存储一组由列标识的记录,列是可以自由定义的, ...