Codeforces 3A Shortest path of the king(BFS???NO!!)




Shortest path of the king

Time Limit: 1000ms
Memory Limit: 65536KB
This problem will be judged on  CodeForces. Original ID:  3A
64-bit integer IO format:  %I64d      Java class name:  (Any)
Prev 
Submit  Status  Statistics  Discuss
  Next
Type: 
None
  None Graph Theory      2-SAT     Articulation/Bridge/Biconnected Component      Cycles/Topological Sorting/Strongly Connected Component      Shortest Path          Bellman Ford         Dijkstra/Floyd Warshall      Euler Trail/Circuit      Heavy-Light Decomposition     Minimum Spanning Tree      Stable Marriage Problem      Trees     Directed Minimum Spanning Tree      Flow/Matching          Graph Matching             Bipartite Matching              Hopcroft–Karp Bipartite Matching              Weighted Bipartite Matching/Hungarian Algorithm          Flow              Max Flow/Min Cut             Min Cost Max Flow  DFS-like      Backtracking with Pruning/Branch and Bound      Basic Recursion     IDA* Search      Parsing/Grammar     Breadth First Search/Depth First Search      Advanced Search Techniques          Binary Search/Bisection         Ternary Search  Geometry      Basic Geometry     Computational Geometry      Convex Hull      Pick's Theorem Game Theory      Green Hackenbush/Colon Principle/Fusion Principle      Nim     Sprague-Grundy Number  Matrix     Gaussian Elimination      Matrix Exponentiation Data Structures      Basic Data Structures     Binary Indexed Tree      Binary Search Tree      Hashing     Orthogonal Range Search      Range Minimum Query/Lowest Common Ancestor      Segment Tree/Interval Tree     Trie Tree      Sorting      Disjoint Set String      Aho Corasick     Knuth-Morris-Pratt      Suffix Array/Suffix Tree Math      Basic Math     Big Integer Arithmetic      Number Theory         Chinese Remainder Theorem          Extended Euclid          Inclusion/Exclusion         Modular Arithmetic      Combinatorics          Group Theory/Burnside's lemma         Counting      Probability/Expected Value  Others     Tricky      Hardest     Unusual      Brute Force     Implementation      Constructive Algorithms     Two Pointer      Bitmask     Beginner      Discrete Logarithm/Shank's Baby-step Giant-step Algorithm      Greedy     Divide and Conquer  Dynamic Programming                   Tag it!

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: LRUDLULDRU or RD.

LRUD 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.

Sample Input

Input
a8
h1
Output
7
RD
RD
RD
RD
RD
RD
RD

Source

Codeforces Beta Round #3
题意:国际象棋的王从一个点到另外一个点的最短路径的每一步的方向,原来刚开始想到的是BFS,但是一想有点复杂,一步小心又看到了q神的代码,ORZ,竟然可以这么写,遂参考了他的代码.

AC代码:

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    char s1[5],s2[5];
    while(cin>>s1>>s2)
    {
        int x=s2[0]-s1[0];//LR
        int y=s2[1]-s1[1];//UD
        cout<<max(abs(x),abs(y))<<endl;
        while(x||y)
        {
            if(x>0)
                x--,cout<<"R";
            if(x<0)
                x++,cout<<"L";
            if(y>0)
                y--,cout<<"U";
            if(y<0)
                y++,cout<<"D";
            cout<<endl;
        }
    }
    return 0;
}



你可能感兴趣的:(Path,codeforces,of,the,3A,Shortest)