codeforces3A
Shortest path of the king
棋盘上的国王被单独放置。尽管他是孤独的,但并未伤心,因为他有事关全局的重要性。例如,他必须正式访问方格 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的更多相关文章
随机推荐
- ES6中Object.assign() 方法
ES6中Object.assign() 方法 1. 对象合并Object.assign 方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象上.如下代码演示: var targ ...
- iScroll.js插件使用方法
iScroll.js 用法参考 (share) 分享是传播.学习知识最好的方法 以下这篇文章是iScroll.js官网的中文翻译,尽管自己英文不好,但觉得原作者们翻译的这个资料还是可以的,基本用法介绍 ...
- ftrace利器之trace-cmd和kernelshark
关键词:ftrace.trace-cmd.kernelshark. trace-cmd是设置读取ftrace的命令行工具,kernelshark既可以记录数据,也可以图形化分析结果. trace-cm ...
- 源码篇:Python 实战案例----银行系统
import time import random import pickle import os class Card(object): def __init__(self, cardId, car ...
- Luogu4700 CEOI2011 Traffic Tarjan、搜索
传送门 题意:给出平面上$N$个点,它们一定在左下角为$(0,0)$,右上角为$(A,B)$的一个矩形内的整点上(包括边界),而且会给出$M$条呈直线的边,其中有有向边也有无向边,保证任意两条边不会在 ...
- 查看CentOS/Linux的版本信息
今天在安装MySql的时候,想选择linux的版本对应的MySql. 1.查看内核版本和x86/x64版本 方法一.cat /proc/version [root@sxl129 Desktop]# c ...
- python语言程序设计8
1, 说实话,我挺伤心的,感觉 有点像烂剧里的主演...也许我早几天明白的话,会不会结果会不一样?但是之前还真没往这方面想过,但是确实是开了一个口子了,也不急吧.努力把现在的事给做好,变帅变高,那很 ...
- SpringMvc执行过程
--Test过程: 1. 先执行各种 Filter 2. HttpServlet.service(ServletRequest req, ServletResponse res) 3. HttpSer ...
- 浏览器数据库 IndexedDB 入门
一.概述 随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据. 现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的 ...
- 全景3d
Three.js Tour.js Run.js 3D Css3 酷家乐:https://www.kujiale.com/ 爱空间:http://bj.ikongjian.com/?utm_source ...