首页 > codeforces3A

codeforces3A

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 
using namespace std;
typedef int ll;
inline ll read()
{ll s=0;bool f=0;char ch=' ';while(!isdigit(ch)){f|=(ch=='-'); ch=getchar();}while(isdigit(ch)){s=(s<<3)+(s<<1)+(ch^48); ch=getchar();}return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{if(x<0){putchar('-'); x=-x;}if(x<10){putchar(x+'0');    return;}write(x/10);putchar((x%10)+'0');return;
}
#define W(x) write(x),putchar(' ')
#define Wl(x) write(x),putchar('
')
int main()
{int x1,y1,x2,y2;char ch=' ';while(!islower(ch)) ch=getchar();x1=ch-'a'+1;R(y1);ch=' ';while(!islower(ch)) ch=getchar();x2=ch-'a'+1;R(y2);Wl(max(abs(x1-x2),abs(y1-y2)));if(x1<=x2){if(y1<=y2){if(x2-x1>y2-y1){while(y2-y1>0) {puts("RU"); x1++; y1++;}while(x2-x1>0) {puts("R"); x1++;}}else{while(x2-x1>0) {puts("RU"); x1++; y1++;}while(y2-y1>0) {puts("U"); y1++;}}}else{if(x2-x1>y1-y2){while(y1-y2>0) {puts("RD"); x1++; y1--;}while(x2-x1>0) {puts("R"); x1++;}}else{while(x2-x1>0) {puts("RD"); x1++; y1--;}while(y1-y2>0) {puts("D"); y1--;}}}}else{if(y1<=y2){if(x1-x2>y2-y1){while(y2-y1>0) {puts("LU"); x1--; y1++;}while(x1-x2>0) {puts("L"); x1--;}}else{while(x1-x2>0) {puts("LU"); x1--; y1++;}while(y2-y1>0) {puts("U"); y1++;}}}else{if(x1-x2>y1-y2){while(y1-y2>0) {puts("LD"); x1--; y1--;}while(x1-x2>0) {puts("L"); x1--;}}else{while(x1-x2>0) {puts("LD"); x1--; y1--;}while(y1-y2>0) {puts("D"); y1--;}}}}return 0;
}
View Code

 

 

转载于:https://www.cnblogs.com/gaojunonly1/p/10580491.html

更多相关:

  • __author__ = 'qq593' #!/usr/bin/env python #-*- coding:utf-8 -*- #使用while循环输入1 2 3 4 5 6 8 9 10 a=1 while True:print(a)if(a==10):breakif (a==7):a+=1continuea+=1 __au...

  • $dp$。 这道题最关键的是这句话: 跳出思维局限大胆设状态,设$f_{x, i, j}$表示从$x$到根要经过$i$条公路,$j$条铁路的代价,那么对于一个叶子结点,有$f_{x, i, j} = c_x * (a_x + i) * (b_x + j)$,对于内部结点,有转移:   $f_{x, i, j} = min(f_{lso...

  • 合作者:201631062327,201631062128码云地址:https://gitee.com/LIUJIA6/WordCount3 一:项目说明 本次项目是在上次作业WorldCount的基础上,利用结对编程的思想,完成对WorldCount项目的功能扩展 -s 递归处理目录下符合条件的文件。(实现)-a 返回更复杂的数据(...

  • Description 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示。例如可以将魔咒字符 1、2 拼凑起来形成一个魔咒串 [1,2]。 一个魔咒串 S 的非空字串被称为魔咒串 S 的生成魔咒。 例如 S=[1,2,1] 时,它的生成魔咒有 [1]、[2]、[1,2]、[2,1]、[1,2,1] 五种。S=[1,1,1] 时,它的生...

  •   【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=5972   【题目大意】   给出一个字符串,找出其中所有的符合特定模式的子串位置,符合特定模式是指,该子串的长度为n,并且第i个字符需要在给定的字符集合Si中    【题解】   利用ShiftAnd匹配算法。   bt[i]表示...

  • 首先我们可以发现如果错过了一个加油站,而继续往前走的时候没有油了,可以再假装之前经过加油站的时候加过油 于是我们维护一个大根堆,表示错过的加油站是哪些,每当没有油的时候从堆顶取出最大值加上去即可   1 /**************************************************************...