有人说用BFS,但我认为这大可不必。计算从S点到T点需横走多少步,纵走多少步,再把横纵最大限度合并成为斜走,如有剩下再横/纵走即可。
#include "stdio.h"
int min(int a,int b){
return a<b?a:b;
}
int abs(int x){
return x>=0?x:(-x);
}
int main(){
char X1,Y1,X2,Y2,dirheng,dirshu;
int heng,shu,ans,i;
scanf("%c%c\n%c%c\n",&X1,&Y1,&X2,&Y2);
heng=X2-X1;
shu=Y2-Y1;
if(heng>=0)dirheng='L';else dirheng='R';
if(shu>=0)dirshu='D';else dirshu='U';
ans=min(heng,shu)+abs(abs(heng)-abs(shu));
for(i=1;i<=min(heng,shu);i++)printf("%c%c\n",dirheng,dirshu);
for(i=1;i<=abs(abs(heng)-abs(shu));i++){
if(abs(heng)>abs(shu))printf("%c\n",dirheng);
else printf("%c\n",dirshu);
}
return 0;
}