题目链接 : http://codeforces.com/problemset/problem/3/A
题意:king有八个方向可以走,分别为L, R , U, D, LD, LU, RD ,RU 给出king的起点和终点, 问最少需要多少步数,并输出路径,路径可能不唯一。
题解:
记起点和终点在横轴上的距离为tx,纵轴上的距离为ty;由tx,ty的正负值得到起点和终点的相对位置。若在横轴与纵轴上都需要移动,则斜向移动所用步数最少。
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
using namespace std;
int tx,ty;
char fx,fy,start[3],fend[3];
int main()
{
scanf("%s%s",&start,&fend);
tx = fend[0] - start[0];
ty = fend[1] - start[1];
//printf("%d %d\n",tx,ty);
if (tx > 0) fx = 'R';
else fx = 'L',tx = -tx;
if (ty > 0) fy = 'U';
else fy = 'D',ty = -ty;
//printf("%c %c\n",fx,fy);
printf("%d\n", max(tx,ty));
while (tx > 0 || ty > 0)
{
if (tx > 0) printf("%c",fx);
if (ty > 0) printf("%c",fy);
printf("\n");
tx--, ty--;
}
return 0;
}