思路:水题,问从棋盘某点到某点的最短路径,并且输出,不难发现,能斜走就斜走,然后不断逼近目标就好了
#include <cstdio>
#include <queue>
#include <cstring>
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <map>
#include <string>
#include <set>
#include <ctime>
#include <cmath>
#include <cctype>
using namespace std;
#define maxn 2005
#define LL long long
int cas=1,T;
string s1,s2;
string s[maxn];
int main()
{
while (cin >> s1)
{
int ans = 0;
cin >> s2;
while (s1[0]<s2[0] && s1[1]<s2[1])
s1[0]++,s1[1]++,s[ans++]="RU";
while (s1[0]<s2[0] && s1[1]>s2[1])
s1[0]++,s1[1]--,s[ans++]="RD";
while (s1[0]>s2[0]&&s1[1]<s2[1])
s1[0]--,s1[1]++,s[ans++]="LU";
while (s1[0]>s2[0] && s1[1]>s2[1])
s1[0]--,s1[1]--,s[ans++]="LD";
while (s1[0]<s2[0])
s1[0]++,s[ans++]="R";
while (s1[0]>s2[0])
s1[0]--,s[ans++]="L";
while (s1[1]<s2[1])
s1[1]++,s[ans++]="U";
while (s1[1]>s2[1])
s1[1]--,s[ans++]="D";
printf("%d\n",ans);
for (int i = 0;i<ans;i++)
cout << s[i] << endl;
}
//freopen("in","r",stdin);
//scanf("%d",&T);
//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);
return 0;
}