博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces-A. Shortest path of the king(简单bfs记录路径)
阅读量:5140 次
发布时间:2019-06-13

本文共 2305 字,大约阅读时间需要 7 分钟。

A. Shortest path of the king

time limit per test

1 second

memory limit per test

64 megabytes

input

standard input

output

standard output

The king is left alone on the chessboard. In spite of this loneliness, he doesn't lose heart, because he has business of national importance. For example, he has to pay an official visit to square t. As the king is not in habit of wasting his time, he wants to get from his current position s to square t in the least number of moves. Help him to do this.

In one move the king can get to the square that has a common side or a common vertex with the square the king is currently in (generally there are 8 different squares he can move to).

Input

The first line contains the chessboard coordinates of square s, the second line — of square t.

Chessboard coordinates consist of two characters, the first one is a lowercase Latin letter (from a to h), the second one is a digit from 1 to 8.

Output

In the first line print n — minimum number of the king's moves. Then in n lines print the moves themselves. Each move is described with one of the 8: L, R, U, D, LU, LD, RU or RD.

L, R, U, D stand respectively for moves left, right, up and down (according to the picture), and 2-letter combinations stand for diagonal moves. If the answer is not unique, print any of them.

Examples

input

a8h1

output

7RDRDRDRDRDRDRD

 解题思路:一个8*8的图,8个方向移动,字符转化为数字表示,bfs记录路径最短路径,到达目标点即遍历结束,记录路径,路径移动方向转变为题中的字符方向。

#include 
#include
#include
#include
#include
#include
using namespace std;int d_x[4] = { 0, 1, -1 };int d_y[4] = { 0, 1, -1 };int e[10][10], book[10][10];int next[2][10000];int end_xx[10000],end_yy[10000];int sum;int start_x, start_y, end_x, end_y;struct node { int pre; int x, y; int step;};node qt[10000];void conversion(int x,int y){ if(x==1){ cout<<"R"; }else if(x==-1){ cout<<"L"; } if(y==-1){ cout<<"D"; }else if(y==1){ cout<<"U"; } }void bfs() { int head = 1; int tail = 1; node q; q.x = start_x; q.y = start_y; q.pre = head; q.step = 0; qt[tail] = q; qt[tail].pre = head; tail++; queue
qq; qq.push( q ); while( !qq.empty() ) { node temp = qq.front(); head = temp.pre; // cout<<"head = "<<
= 0; i-- ) {// cout<
<<" "<
<

 

转载于:https://www.cnblogs.com/0526yao/p/10372091.html

你可能感兴趣的文章
Hadoop Distributed File System 简介
查看>>
文档通信(跨域-不跨域)、时时通信(websocket)、离线存储(applicationCache)、开启多线程(web worker)...
查看>>
常用正则表达式
查看>>
队列的基本使用方法
查看>>
解题:USACO18FEB Taming the Herd
查看>>
ACM-括号匹配问题
查看>>
使用Python中的urlparse、urllib抓取和解析网页(一)(转)
查看>>
Linux_屏蔽360、scanv、QQ管家等IP扫描
查看>>
LeetCode 538. Convert BST to Greater Tree
查看>>
@JoinColumn
查看>>
2019浙师大校赛(浙大命题)(upc复现赛)总结
查看>>
Git多人协作常用命令
查看>>
connectionString属性server、database设置
查看>>
php下载图片
查看>>
C算法编程题(五)“E”的变换
查看>>
深入理解Web Server原理----在CC3200 WiFi模块上构建轻量级Web Server
查看>>
ecshop如何让所有页面都显视最能文章以提高SEO优化效果
查看>>
Android 6.0 使用 Apache HttpClient
查看>>
SQL server 的约束条件【转】
查看>>
iOS 弹出键盘,输入框上移问题
查看>>